小编典典

可以用 innerHTML 插入脚本吗?

all

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

阅读 40

收藏
2022-05-18

共1个答案

小编典典

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

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

一般来说,如果你eval()自己去,你想创建/发送没有任何 HTML 标记的脚本代码,例如<script>,因为这些不会eval()正确。

2022-05-18