我想一些脚本加载到使用页面innerHTML上<div>。脚本似乎已加载到DOM中,但从未执行(至少在Firefox和Chrome中)。将脚本插入时,是否可以执行脚本innerHTML?
innerHTML
<div>
样例代码:
<!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
<script>
通常,如果您要eval()亲自进行操作,则希望创建/发送没有任何HTML标记(例如)的脚本代码<script>,因为这些标记将无法eval()正常使用。
eval()
因此,使用它代替脚本标签:
<img src="empty.gif" onload="alert('test');this.parentNode.removeChild(this);" />