(请不要将此问题标记为Can scripts be inserted with innerHTML?的副本,因为它不是。)
我想知道为什么通过innerHTML创建的脚本元素在附加到DOM时不会被执行:
container=document.createElement('div');
container.innerHTML='<script>alert()</'+'script>';
document.body.appendChild(container.firstChild);
...虽然通过document.createElement创建的相同脚本在附加到DOM时执行:
script=document.createElement('script');
script.innerHTML='alert()';
document.body.appendChild(script);
它在我看来是不一致的:在这两种情况下我都附加了一个脚本元素(看起来相同),所以我不明白为什么附加相同的脚本会产生不同的结果,具体取决于生成此脚本的方式。
答案 0 :(得分:0)
当您创建'script'标记时,浏览器会评估脚本表达式,但是当您创建'div'标记时,即使脚本在浏览器中,也不会评估该脚本。
默认情况下,当您加载DOM后附加元素时,如果您在其中添加脚本,浏览器将不会检查/运行,除非它是脚本纯元素。