IE6 启用代理自动配置 (PAC) 后的一个必现 Bug
最近从用户那里收到反馈说访问产品出现“白屏”,
由于版本上线前都必须在众多不同环境下通过测试,
于是猜想这个问题的出现与用户的浏览器设置有关;
进而联系用户来模拟其使用环境加以调试,
终于定位并解决了这个“非主流” Bug ,
记录如下以供各位参考。
这里先描述一下重现场景,
必须同时满足如下所有条件:
- IE 6
- 启用了“代理自动配置 (PAC)”
- PAC 文件内容非空,且使用 http 协议访问
- 2页面引用了一个未经缓存的外部脚本
- 该脚本访问了 location 对象
该场景下访问页面会得到 Access Denied 错误(try catch 后如下图),
出错位置正是访问 location 对象的那一句。
测试环境只对 IE6 启用了 PAC 而已,
其它设置均保持默认值,
所以除了说服用户升级浏览器或放弃使用 PAC 之外,
我们只能想办法去规避这个问题。
幸亏 document 对象下还挂着个 URL 属性,
它指向文档的实际地址,
且在绝大部分情况下等同于 location.href;
因此我们只需要用正则或利用 DOM 对象去分解它即可,
例如:
document.URL.match(/^([^:]+):\/\/(?:([^:@]+):?([^@]*)@)?(?:([^/?#:]+):?(\d*))([^?#]*)(?:\?([^#]+))?(?:#(.+))?$/);
本文出自 传播、沟通、分享,转载时请注明出处及相应链接。
本文永久链接: https://www.nickdd.cn/?p=1894