使用innerhtml将脚本标签插入到html元素中[重复]

Posted

技术标签:

【中文标题】使用innerhtml将脚本标签插入到html元素中[重复]【英文标题】:insert script tags into html element using innerhtml [duplicate] 【发布时间】:2014-12-21 03:29:11 【问题描述】:

我无法将此代码插入我的 html 页面:

<script type="text/javascript">
var1 = "1";
var2 = "2";
var3 = "3";
</script>
<script type="text/javascript" src="http://www.someadress.com/sss.js"></script>
<noscript><a href="http://someadress" target="_blank"><img src="someimg" 
></a></noscript>';

我尝试过使用innerhtml,但它似乎不起作用。这是我尝试过的一个例子;我正在尝试在 ID 为 allImages 的元素中添加脚本:

    var imagesHTML = document.getElementById("allImages").innerHTML;
    imagesHTML = '<script type="text/javascript">
    var1 = "1";
    var2 = "2";
    var3 = "3";
    </script>
    <script type="text/javascript" src="http://www.someadress.com/sss.js"></script>
    <noscript><a href="http://someadress" target="_blank"><img src="someimg" 
    ></a></noscript>';

【问题讨论】:

【参考方案1】:

您无法通过注入 HTML 来加载 &lt;script&gt; 标签。相反,您需要使用eval() 函数!还有其他创建 DOM 对象和调用脚本的方法。请查看以下内容:

Executing <script> elements inserted with .innerHTML。 Can scripts be inserted with innerHTML?

注意:你应该永远不要使用eval(),除非你知道环境并且是绝对必要的。

如果您不需要这些麻烦,您可以随时使用 jQuery 和 MooTools 之类的库来使用 .html() 函数插入 HTML。

【讨论】:

“相反,你需要使用eval() 函数!” 不,你不需要。而且可以说真的不应该 另外:既然您知道这是上一个问题的重复,即使麻烦链接到它,为什么不将问题作为重复关闭? @T.J.Crowder 更新了答案。请务必检查一下。 “相反,你需要使用eval()函数!”仍然存在,但仍然不正确。 重复的答案似乎是针对 1 个好的解决方案 + 我无法理解代码,我将脚本用于整个 html 或每次用于不同的标签?

以上是关于使用innerhtml将脚本标签插入到html元素中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Angular将样式标签添加到innerHTML

标签的innerHTML属性和html()

Angular2动态插入脚本标签

使用 .innerHTML 时 HTML 标签损坏

为啥我不能在 IE 中将包含脚本标签的字符串添加到 innerHTML

HTML innerText