JavaScript可以使用innerHTML插入脚本吗?
我想一些脚本加载到使用页面innerHTML
上<div>
。脚本似乎已加载到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>
回答:
您必须使用eval()来执行作为DOM文本插入的任何脚本代码。
MooTools会自动为您执行此操作,而且我敢肯定jQuery也是如此(取决于版本。jQuery
1.6+版本使用eval
)。这样可以节省解析<script>
标签和转义内容的麻烦,以及一堆其他“陷阱” 的麻烦。
通常,如果您要eval()
亲自进行操作,则希望创建/发送没有任何HTML标记(例如)的脚本代码<script>
,因为这些标记将无法eval()
正常使用。
以上是 JavaScript可以使用innerHTML插入脚本吗? 的全部内容, 来源链接: utcz.com/qa/397413.html