我尝试在<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>
发布于 2009-07-29 01:04:25
您必须使用eval()来执行作为DOM文本插入的任何脚本代码。
MooTools会自动为你做这件事,我相信jQuery也会这样做的(取决于版本。jQuery版本1.6+使用eval
)。这省去了很多解析<script>
标签和转义内容的麻烦,也省去了一堆其他的“陷阱”。
通常,如果你打算自己eval()
它,你想创建/发送脚本代码没有任何超文本标记语言标记,如<script>
,因为这些将不会正确eval()
。
发布于 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);" />
发布于 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
https://stackoverflow.com/questions/1197575
复制相似问题