gpt4 book ai didi

javascript - 为什么 cloneNode <script> 标签不执行?

转载 作者:数据小太阳 更新时间:2023-10-29 03:51:59 34 4
gpt4 key购买 nike

克隆的 <script> 标签不执行。为什么?

例子:

<script id="hello">
console.log("hello execution count ", window.helloCount++);
</script>

<script id="action">
document.body.appendChild(
document.getElementById('hello').cloneNode(true));
console.log('cloned the script');
</script>

执行后,文档中有两个hello脚本,但只执行了一个。

http://jsbin.com/zuxoro/1/edit?html,console,output

这是我正在处理的一个更大问题的一部分,所以我知道这是一件愚蠢的事情。

最佳答案

此行为是 W3C HTML5 specification 所要求的.

每个<script>元素有一个名为“已经开始”的属性标志。规范说:

Initially, script elements must have this flag unset (script blocks, when created, are not "already started"). The cloning steps for script elements must set the "already started" flag on the copy if it is set on the element being cloned.

然后,稍后:

If the script element is marked as having "already started", then the user agent must abort these steps at this point. The script is not executed.

解决方案不是简单地克隆脚本元素,而是创建填充有相同内容的全新元素。

关于javascript - 为什么 cloneNode &lt;script&gt; 标签不执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771542/

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