首页 >web前端 >js教程 >为什么通过innerHTML添加的脚本总是不执行,我该如何修复它?

为什么通过innerHTML添加的脚本总是不执行,我该如何修复它?

Patricia Arquette
Patricia Arquette原创
2024-12-23 00:22:10692浏览

Why Don't Scripts Added via innerHTML Always Execute, and How Can I Fix It?

脚本可以与innerHTML合并吗?

使用innerHTML将脚本插入到

页面中可能会导致脚本出现在 DOM 中,而不会在 Firefox 和 Chrome 等浏览器中执行。本文探讨了此行为背后的原因,并提供了使此类脚本可执行的解决方案。

示例代码中提供的 HTML 演示了在

中尝试执行脚本的情况。使用innerHTML。但是,所需的警报消息“hi”并未出现,这表明脚本无法运行。

为了解决这个问题,我们提出了一种方法,以递归方式将所有不可执行的脚本替换为可执行脚本。该方法称为 nodeScriptReplace,遍历 DOM 树并识别脚本元素。如果遇到不可执行的脚本,它会克隆该脚本,为其分配可执行内容,并替换原始脚本元素,使其能够执行。

此外,nodeScriptClone 函数通过提取来创建可执行脚本元素不可执行脚本的innerHTML 并设置其属性。这些属性将转移到新的可执行脚本,确保正确的行为。

nodeScriptIs 函数通过检查给定节点的标签名称来检查其是否为脚本元素。

执行脚本并显示“hi”警报,只需在页面的根元素上调用 nodeScriptReplace 即可。下面的代码片段演示了这一点:

nodeScriptReplace(document.getElementsByTagName("body")[0]);

此方法提供了一种强大的机制,用于执行使用innerHTML 添加到页面的脚本,确保其预期功能。

以上是为什么通过innerHTML添加的脚本总是不执行,我该如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn