如果我在任何页面上的 Firebug 中运行以下行:
document.documentElement.innerHTML="<script>alert(1)</script>";
为什么不是 alert
命令执行了吗?
最佳答案
看起来你的<script>
标签正在按照您的预期添加,但其中的代码没有被执行。如果您尝试使用document.head
,也会发生同样的失败。 (或者任何其他 DOM 元素,看起来)。无论出于何种原因(可能是标准合规性、可能是安全性), <script>
内的内联代码通过 .innerHTML
添加的 block 根本不运行。
但是,我确实有可以产生类似功能的工作代码:
var script = document.createElement('script');
script[(script.innerText===undefined?"textContent":"innerText")] = 'alert(1);';
document.documentElement.appendChild(script);
在这里,您添加 <script>
阻止 documentElement.appendChild
并使用textContent
或innerText
设置 <script>
的内容.
关于javascript - 使用内部脚本设置innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31287119/