document.location.href
的返回值有时会变为javascript:window["contents"]
。
什么时候会发生?怎么避免呢?
我发现了 代码放在没有src url的iframe中。
<iframe id="google_ads_iframe_/21202031/LTN-000-03-HOME-120X600-DISPLAY_0" name="google_ads_iframe_/21202031/LTN-000-03-HOME-120X600-DISPLAY_0" width="120" height="600" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" src="javascript:"<html><body style='background:transparent'></body></html>"" style="border: 0px; vertical-align: bottom;"></iframe>
答案 0 :(得分:1)
正如您已经怀疑的那样,这确实与(I)帧有关,更具体地说,是某些脚本/库与这些帧一起工作的方式。
技术在某些情况下在加载外部javascript(加载异步)时避免ReferenceError
(在IE中),该外部javascript保存/提供使用的变量/对象在框架的内联脚本源中。
引用一篇名为“inject content into a new iframe”的文章中最相关的部分:
我们使用以下内容而不是使用document.open/write/close 的方法:
iframe.contentWindow.contents = content; iframe.src = 'javascript:window["contents"]';
首先,我们将动态内容分配给iframe上的变量 窗口对象。然后我们通过javascript:scheme调用它。这不是 只能正确呈现HTML,但是加载并执行脚本 所需的顺序。
这也符合similar answer on SO。
希望这有帮助!
答案 1 :(得分:0)
对我来说,我有3个用Internet Explorer打开的标签... Yahoo,MSN和我的电子邮件帐户。去“工具”&gt;互联网选项并删除雅虎,好吧,关闭。在我确认我不再获得java脚本错误选项卡后,我重新安装了Yahoo并解决了这个问题。