当我使用创建脚本元素document.createElement并将其附加到时document.head,JavaScript 成功执行:
var el = document.createElement('script');
el.text = "console.log('Hello World!')";
document.head.insertAdjacentElement('afterbegin', el);
// console output: "Hello World!"Run Code Online (Sandbox Code Playgroud)
但是如果我使用 DOMParser 解析 html 字符串然后将其附加firstElementChild到document.head,则 JavaScript 不会执行:
var parser = new DOMParser();
var htmlString = "<script>console.log('Bye World!')<\/script>";
var domEl = parser.parseFromString(htmlString, "text/xml").firstElementChild;
document.head.insertAdjacentElement('afterbegin', domEl);
// No console outputRun Code Online (Sandbox Code Playgroud)
在这两种情况下<script>都会添加一个标签。document.head为什么在第二种情况下 JavaScript 不执行?