document.location.href得到了javascript:window [“contents”]

时间:2013-07-24 04:02:37

标签: javascript dom

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:&quot;<html><body style='background:transparent'></body></html>&quot;" style="border: 0px; vertical-align: bottom;"></iframe>

2 个答案:

答案 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并解决了这个问题。