为什么不能执行?
官方文档规定的,HTML 5 中指定不执行由innerHTML插入的【script】标签。
效果的就是能插入进去,但是不执行,因为被解析成一段纯文字了。
怎么解决?
原理就是,用document的createElement()方法创建一个script元素,然后动态的插入对应的元素中,具体列子如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div class="test"></div>
<button onclick="dynamicInsertScript()">动态插入script标签</button>
<script>
function createScript(param) {
let sc = document.createElement("script");
sc.innerHTML = `alert(${param})`;
return sc;
}
function dynamicInsertScript() {
let ele = document.querySelector(".test");
ele.appendChild(createScript(Math.random()));
}
</script>
</body>
</html>