0

我正在尝试将脚本添加到页面 DOM 的 HTML 的 HEAD 中,并将其作为字符串返回,但实际上并未修改当前页面。我只想要字符串输出而不实际影响当前页面。

我有以下代码在 Firefox/Chrome 中完美运行,但在 IE9 中它会导致 ACTUAL DOM 操作:

var htmlstr = $("head").html()

var div = document.createElement('div');
div.innerHTML = htmlstr;

var ca = document.createElement("script");
ca.type = "text/javascript";
ca.src = "somefile.js";

div.insertBefore(ca, div.firstChild || null);

我可以在 IE 控制台中看到“ca.src =”行正在触发文件的实际下载并插入到页面 DOM 中,而不仅仅是使用我创建的临时 div 来模拟它。有没有更好的方法来完成这个或一些可以使 IE 符合要求的修复?我知道这可能是一个奇怪的请求,但没有对我们可行的服务器端解决方法。

我应该补充一点,我们不希望 html 字符串中的任何 JS 实际执行。

4

1 回答 1

0

您可以在页面上保留一个可用的 iframe,然后修改 iframe 并从 iframe 中检索内容。

您也可以尝试使用 iframe 来获得相同的结果。

i = $("iframe");
s = $("script").attr("src","somefile.js");
z = i.contents().createElement("script");
z.type = "text/javascript";
z.src = "somefile.js";
i.contents().insertBefore(ca,i.contents().firstChild||null);

i.contents() 应该有带有标签的结果。

让我知道这是否有帮助。

于 2013-04-25T07:01:54.327 回答