1

问候,

我们即将推出一个安全站点(抱歉,没有 URL)并且在 IE6 中发现了一个相当深奥的错误,我希望有人可能已经遇到或能够阐明一些问题。仅当存在三个因素时才会发生这种情况:

  1. 浏览器是IE6(它是一个金融客户端,这是他们认可的浏览器)
  2. 页面中使用的是SWFAddress,全部为 Flash
  3. void(0)从浏览器书签调用,其值设置为 JavaScript 字符串

如果您熟悉 Instapaper 的“稍后阅读”书签,它会启动一个带有“稍后阅读”按钮的弹出窗口,以将您正在查看的 URL 提交到他们的网站以进行记录,这是相同的前提。

这适用于我测试过的父窗口中的任何其他 URL。只有当 SWF 使用 SWFAddress 更新浏览器历史记录/URL 时,它才会失败,这是一项要求,因为这是我们尝试使用小书签工具捕获的深层链接 URL。

据我了解,JavaScript 字符串需要以 void(0) 结尾,以便父窗口不会导航到 JavaScript 字符串。这是 JavaScript 在 href 属性中的典型应用。

我们看到两件事:

  1. 在您第一次使用书签中的 JS 代码打开新的浏览器窗口后,SWFAddress 不再更新浏览器历史记录/URL 栏。
  2. 在您提交并关闭包含表单的新浏览器窗口后,随后通过书签打开窗口会忽略 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 部分由另一家供应商管理,因此我无法控制或了解他们的代码。我真的只是想提出这个问题,看看是否有人遇到过与这组因素有关的问题。

非常感谢,马克

4

3 回答 3

1

你好你可以试试这个

<a href='#' onclick='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');'>click to visit</a>
于 2009-11-20T16:17:01.580 回答
1

看起来您的小书签有一些语法错误,可以再减少一点:

javascript:var%20f='http://mydomain.com/popup?l=',l=document.location,e=encodeURI,p=e(l.href),u=f+p,s=p.split('/');if(s[3]=='p'||s[3]=='t')u+='&p='+s[5];open(u,'p','toolbar=0,menubar=0,directories=0,personalbar=0,resizable=0,status=1,width=300,height=460');void(0);

您也可以尝试添加 return false; 而不是 void(0);

于 2009-11-20T17:09:37.353 回答
1

如果您使用的是 getURL() 或 navigateToUrl(),那么您需要知道它会与 SWFAddress 产生冲突。检查http://www.asual.com/blog/swfaddress/2007/05/18/swfaddress-bad-practices.html以获得解释。

于 2009-11-20T17:14:14.580 回答