1

的返回值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>
4

2 回答 2

2

正如您已经怀疑的那样,这确实与 (I)Frames 有关,更具体地说,与某些脚本/库与这些框架一起工作的方式有关。

这是一种在某些情况下避免ReferenceError(在 IE 中)加载外部 javascript(即异步加载)的技术,该 javascript 保存/提供在框架的内联脚本源中使用的变量/对象。

引用一篇名为 ' inject content into a new iframe ' 的文章中最相关的部分:

我们不使用 document.open/write/close,而是使用以下方法:

iframe.contentWindow.contents = content;
iframe.src = 'javascript:window["contents"]';

首先,我们将动态内容分配给 iframe 窗口对象上的变量。然后我们通过 javascript: 方案调用它。这不仅正确地呈现 HTML,而且以所需的顺序加载和执行脚本。

这也符合SO 上的类似答案

希望这可以帮助!

于 2013-07-24T23:25:54.930 回答
0

对我来说,我有 3 个使用 Internet Explorer 打开的选项卡... Yahoo、MSN 和我的电子邮件帐户。转到“工具”> Internet 选项并删除雅虎,好的并关闭。在我确认我不再获得 java 脚本错误选项卡后,我重新安装了 Yahoo 并解决了问题。

于 2015-10-24T14:57:54.463 回答