首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以使用innerHTML插入脚本吗?

可以使用innerHTML插入脚本吗?
EN

Stack Overflow用户
提问于 2009-07-29 09:01:13
回答 17查看 236.7K关注 0票数 252

我尝试在<div>上使用innerHTML将一些脚本加载到页面中。脚本似乎加载到了DOM中,但从来没有执行过(至少在Firefox和Chrome中是这样)。有没有办法在使用innerHTML插入脚本时执行这些脚本

示例代码:

<!DOCTYPE html>
<html>
  <body onload="document.getElementById('loader').innerHTML = '<script>alert(\'hi\')<\/script>'">
    Shouldn't an alert saying 'hi' appear?
    <div id="loader"></div>
  </body>
</html>

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2009-07-29 01:04:25

您必须使用eval()来执行作为DOM文本插入的任何脚本代码。

MooTools会自动为你做这件事,我相信jQuery也会这样做的(取决于版本。jQuery版本1.6+使用eval)。这省去了很多解析<script>标签和转义内容的麻烦,也省去了一堆其他的“陷阱”。

通常,如果你打算自己eval()它,你想创建/发送脚本代码没有任何超文本标记语言标记,如<script>,因为这些将不会正确eval()

票数 106
EN

Stack Overflow用户

发布于 2010-09-15 11:07:44

这里有一个非常有趣的问题解决方案:http://24ways.org/2005/have-your-dom-and-script-it-too

所以使用下面的代码而不是脚本标记:

<img src="empty.gif" onload="alert('test');this.parentNode.removeChild(this);" />

票数 97
EN

Stack Overflow用户

发布于 2013-04-29 20:04:56

我使用了这段代码,它工作得很好

var arr = MyDiv.getElementsByTagName('script')
for (var n = 0; n < arr.length; n++)
    eval(arr[n].innerHTML)//run script inside div
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1197575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档