【发布时间】:2017-01-15 15:23:29
【问题描述】:
我正在阅读this 问题,接受的答案是:
通过设置元素的 innerHTML 属性添加的脚本不会被执行。
但是当我尝试在以下代码中更改第一个 <script> 标记的 innerHTML 时:
<script></script>
<script>
document.querySelectorAll("script")[0].innerHTML = 'console.log("Test")';
</script>
我可以看到正在执行的<script> 元素的注入代码(console.log() 函数输出测试)。
此外,如果我删除第一个空的 <script> 标记(从而使第一个元素 [0] 引用脚本本身),则脚本在 DOM 中被更改,但代码永远不会执行。
<script>
document.querySelectorAll("script")[0].innerHTML = 'console.log("Test")';
</script>
是什么促使了这种行为?
【问题讨论】:
标签: javascript html dom properties innerhtml