无法使用Element.insertAdjacentHTML()执行内联脚本

时间:2019-10-15 08:55:21

标签: javascript

我可以使用insertAdjacentHTML执行嵌入式javascript吗?

在浏览器控制台中有效的内容:

$('body').append('<script>alert(1)</script>')

我需要在浏览器控制台中进行的工作:

document.body.insertAdjacentHTML('beforeend', '<script>alert(1)</script>');

VanillaJS解决方案不起作用。我会为一个原因感到高兴

2 个答案:

答案 0 :(得分:1)

使用insertAdjacentHTML,尽管脚本标签已添加到页面,但不会对其进行解析或执行。

要使脚本实际运行,您需要使用createElement

var script = document.createElement('script');
script.innerText = "console.log('Hello!');";

document.body.append(script);

答案 1 :(得分:0)

var script = document.createElement('script'); // create a new script element 

script.innerText = "alert('Hello!');"; // InnerText property html-encodes the content, 
document.body.append(script); //append innterText to script