【问题标题】:document.body.innerHTML strips javascript in IE - bug?document.body.innerHTML 在 IE 中剥离 javascript - 错误?
【发布时间】:2013-11-14 10:06:50
【问题描述】:

我想将标签解析为 document.body.innerHTML(见下文)。但是,尽管您可以在 Chrome 中执行此操作,但它在 IE 中不起作用。我必须让它在 IE 中起作用,但这似乎是不可能的。有什么想法吗?

html = '<script> function myFunction() { alert(); } </script>AAA'

doc.body.innerHTML = html

AAA 存储在 doc.body.innerHTML 中

要快速复制问题,只需将下面的第一行添加到 IE 控制台窗口,然后查看 document.body.innerHTML 中的内容,您会发现它已被删除。

我们使用了一个 10 年前的文本编辑器,它只能在 IE 中工作,并且总是剥离 javascript,所以现在我发现了原因,并希望有人可以提供替代方案......谷歌搜索没有多大帮助

document.body.innerHTML = "<script> function myFunction() { alert(); } </script>AAA"

document.body.innerHTML

“AAA”

【问题讨论】:

  • 正确分享相关代码,必须检查您的问题..
  • 我刚刚更新了问题/代码

标签: javascript html internet-explorer


【解决方案1】:

这将适用于任何浏览器插入javascript:

var newScript = document.createElement('script');
var scriptTag = document.getElementsByTagName('script')[0];
newScript.text = "function myFunction() { alert(); }"
scriptTag.parentNode.insertBefore(newScript, scriptTag);

【讨论】:

  • 这真的对我的问题没有帮助。我正在使用 10 年前编写的专有文本编辑器,它大量使用 javascript。问题中的一段代码是它失败的地方。如果我能够像 chrome 一样将脚本标签、图像标签等存储到 document.body.innerHTML 中,那么一切都会好起来的
  • 感谢您的链接..我尝试了 Script 标签的 DEFER 属性,但它不起作用。所以它看起来像是 MSDN 中的设计。但是,任何标记的项目都会被删除,例如
【解决方案2】:

你好,试试下面的代码可能会帮助你..

您需要为 标签使用转义字符

div.innerHTML = '<script> function myFunction() { alert(); } <\/script>AAA';

【讨论】:

  • 从 document.getElementById('pinEditHtml').contentWindow.document 中获取原始文本。
  • codebreaker 有一个正确的解决方案。当解析器遇到文字 &lt;/script&gt; 时,它会停止解析当前脚本。您需要在将字符串添加到 HTML 之前对其进行操作,或者使用 Ramesh 的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-27
  • 2011-11-18
  • 2011-10-04
  • 1970-01-01
  • 2011-04-04
相关资源
最近更新 更多