动态创建的script标签插入到dom中不执行?

js代码如下,alert方法没执行

let html = '<div>我是评论的内容</div><script>alert(1);<\/script>';
document.getElementById('content').innerHTML=html;
阅读 10.1k
2 个回答

要模拟XSS攻击效果,应该是使用 document.write来实现;
document.write("<script type='text/javascript'>alert(1)</script>");

使用innerHTML方法默认里面的文本就是string类型的,所以不会执行;

动态在页面上插入js代码的两种方式:

//代码一:
let script = document.createElement('script');
script.type= 'text/javascript';
script.onload = script.onreadystatechange = function() {
    if (!this.readyState || this.readyState === "loaded"
 || this.readyState === "complete" ) {
        callback();
 // Handle memory leak in IE
 script.onload = script.onreadystatechange = null;
 }
};
let scriptSrc='./dist/alert.js';
script.src= scriptSrc;
var head = document.getElementsByTagName('head')[0];
head.appendChild(script);

代码二:

//代码二:
var script = document.createElement("script");
script.type = "text/javascript";
script.text = "alert('hi')";
document.body.appendChild(script);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏