问候,
我们即将推出一个安全站点(抱歉,没有 URL)并且在 IE6 中发现了一个相当深奥的错误,我希望有人可能已经遇到或能够阐明一些问题。仅当存在三个因素时才会发生这种情况:
- 浏览器是IE6(它是一个金融客户端,这是他们认可的浏览器)
- 页面中使用的是SWFAddress,全部为 Flash
void(0)
从浏览器书签调用,其值设置为 JavaScript 字符串
如果您熟悉 Instapaper 的“稍后阅读”书签,它会启动一个带有“稍后阅读”按钮的弹出窗口,以将您正在查看的 URL 提交到他们的网站以进行记录,这是相同的前提。
这适用于我测试过的父窗口中的任何其他 URL。只有当 SWF 使用 SWFAddress 更新浏览器历史记录/URL 时,它才会失败,这是一项要求,因为这是我们尝试使用小书签工具捕获的深层链接 URL。
据我了解,JavaScript 字符串需要以 void(0) 结尾,以便父窗口不会导航到 JavaScript 字符串。这是 JavaScript 在 href 属性中的典型应用。
我们看到两件事:
- 在您第一次使用书签中的 JS 代码打开新的浏览器窗口后,SWFAddress 不再更新浏览器历史记录/URL 栏。
- 在您提交并关闭包含表单的新浏览器窗口后,随后通过书签打开窗口会忽略 void(0) 并重定向父窗口。
这是书签代码:
javascript:var%20d=document;w=window,f='http://mydomain.com/popup?l=',l=d.location,e=encodeURI,p=e(l.href),u=f+p;s=p.split('/');if(s[3]=='p'||s[3]=='t')u=u+'&p='+s[5];w.open(u,'p','toolbar=0,menubar=0,directories=0,personalbar=0,resizable=0,status=1,width=300,height=460');void(0);
Flash 部分由另一家供应商管理,因此我无法控制或了解他们的代码。我真的只是想提出这个问题,看看是否有人遇到过与这组因素有关的问题。
非常感谢,马克