gpt4 book ai didi

javascript - 使用 DOMParser 解析的脚本不执行

转载 作者:行者123 更新时间:2023-11-29 10:58:12 25 4
gpt4 key购买 nike

当我使用 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!"

但是如果我使用 DOMParser 来解析一个 html 字符串然后附加它的 firstElementChilddocument.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 output

A <script>标签添加到 document.head在这两种情况下。为什么第二种情况JavaScript不执行?

最佳答案

因为 DOMParser 标记了 script 元素,所以它不会运行,因为 DOMParser 解析 text/xml(和其他) 禁用脚本 ( spec )。脚本是否应该运行是与 script 元素关联的一条状态信息,这就是为什么这不会运行脚本两次:

var el = document.createElement('script');
el.text = "console.log('Hello World!')";
document.head.insertAdjacentElement('afterbegin', el);
document.head.removeChild(el);
document.head.appendChild(el);

关于javascript - 使用 DOMParser 解析的脚本不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52779233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com