我尝试将一些脚本加载到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()