2012年3月

IE6 启用代理自动配置 (PAC) 后的一个必现 Bug

最近从用户那里收到反馈说访问产品出现“白屏”,
由于版本上线前都必须在众多不同环境下通过测试,
于是猜想这个问题的出现与用户的浏览器设置有关;
进而联系用户来模拟其使用环境加以调试,
终于定位并解决了这个“非主流” Bug ,
记录如下以供各位参考。

这里先描述一下重现场景
必须同时满足如下所有条件:

  • IE 6;
  • 启用了“代理自动配置 PAC “;
  • 页面内容非空且使用 http 协议访问;
  • 页面引用了一个未经缓存的外部脚本;
  • 该脚本问了 location 对象;

该场景下访问页面会得到 Access Denied 错误(捕获错误后如下图),
出错位置正是访问 location 对象的那一句。

访问 location 对象时报错

测试环境只对 IE 6 启用了 PAC 而已,
其它设置均保持默认值,
所以除了说服用户升级浏览器或放弃使用 PAC 之外,
我们只能想办法去规避这个问题。

- 阅读剩余部分 -

[UserScript] 将 Web 离线迅雷注册为磁力、电驴等特殊链的处理程序

介绍

Web 离线迅雷打开 ed2k 链接

不知标题是否写得太绕口,
简单地说就是将离线迅雷注册为某些特殊(伪)协议的默认处理程序,
包括迅雷快车旋风磁力电驴

08 年写过一个Firefox 扩展来做“解码”这件事,
现在有了 Web 离线迅雷 Web 离线旋风等吸血利器
我在 OSX 上连 P2P 软件都懒得装了。 😱

于是去年干脆写了段脚本做了标题所述之事,
当时还顺手写了个油猴脚本
但一直存在间歇性登录态丢失问题,
于是就搁置了一年未发;
最近研究迅雷联盟时偶有所得,
貌似可以解决上述问题,
于是趁今天有空更新了一下发布出来。

原理简单就不多着墨了,
请自行去阅读 navigator.registerProtocolHandler 的文档

至于兼容性,
脚本虽是为 Firefox 的 GreaseMonkey 所写,
但所有遵循 UserScript 规范的脚本管理器都可以使用;
Chrome 当然能用,
但貌似它对自定义协议有前缀限制;
而 Opera 则未经测试。

2012.03.24 更新:
虽然 UserScript 本身(作为一种事实规范)在各种浏览器上都有其实现,
但完全开放 navigator.registerProtocolHandler 接口的浏览器并不多。
目前本脚本只在 Firefox 上测试通过。

使用方法

  1. 安装并启用该脚本;
  2. 访问 离线迅雷, 请确认当前你处于未登录状态;
  3. 浏览器将会提示你是否授权将离线迅雷注册为上述(伪)协议的默认处理程序(如下图);
  4. 禁用(或干脆删除)本脚本,开始使用吧。

Firefox 询问你是否将 Web 离线迅雷注册为磁力链默认处理程序

历史

  • 2011.02.24 1.0: 初始发布
  • 2012.03.06 1.1: 解决登录问题,增加使用说明

下载

webThunderHelper.user.js