首页 > web前端 > js教程 > 如何确保使用 .innerHTML 执行动态插入的脚本?

如何确保使用 .innerHTML 执行动态插入的脚本?

Linda Hamilton
发布: 2024-12-11 15:52:15
原创
216 人浏览过

How to Ensure Dynamically Inserted Scripts Execute Using .innerHTML?

使用 .innerHTML 评估动态插入的脚本

如果内容包含 <script>,则使用 .innerHTML 将内容插入网页有时会导致问题。元素。这是因为这些元素中的脚本代码可能不会自动执行。</script>

为了解决这个问题,我们可以显式执行这些脚本。让我们探索如何在 JavaScript 中执行此操作:

ES6 实现:

function setInnerHTML(elm, html) {
  elm.innerHTML = html;

  Array.from(elm.querySelectorAll("script")).forEach(oldScriptEl => {
    const newScriptEl = document.createElement("script");

    Array.from(oldScriptEl.attributes).forEach(attr => {
      newScriptEl.setAttribute(attr.name, attr.value);
    });

    const scriptText = document.createTextNode(oldScriptEl.innerHTML);
    newScriptEl.appendChild(scriptText);

    oldScriptEl.parentNode.replaceChild(newScriptEl, oldScriptEl);
  });
}
登录后复制

用法:

.innerHTML = HTML; // Does not run <script> tags in HTML
setInnerHTML(, HTML); // Runs <script> tags in HTML
登录后复制

该脚本遍历新插入的内容,定位到<script>元素,并创建新的 <script>元素及其属性和代码。然后它会替换原来的 <script>包含这些新元素的元素,确保脚本代码得到执行。</script>

以上是如何确保使用 .innerHTML 执行动态插入的脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板