繁体   English   中英

在动态加载后执行注入的脚本元素

[英]Execute injected script element after it has been loaded dynamically

我发出一个 ajax 请求,在我的头部或身体元素中注入一个脚本节点,如下所示:

window.addEventListener("DOMContentLoaded", () => {

    this._client.get('/getFragment', (responseText) => {
        const obj = JSON.parse(responseText);
        const scriptTag = document.createElement('template');
        scriptTag.innerHTML = obj.fragment;

        document.body.appendChild(scriptTag.content);
    });
});

现在的问题是脚本被注入到 DOM 中,但是当这个 JS 脚本调用另一个外部 URL 时,我可以在网络监视器中看到脚本的 URL 没有被调用/执行。 在我将脚本标签注入 DOM 后,如何确保它被执行?

我想注入的片段是这个:

<script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic.com/mcjs-connected/js/users/1f.js");</script>

我不太确定我是否理解您的要求,但我认为问题在于您正在创建一个template元素,而浏览器通常不会执行这些内容。 尝试使用document.createElement('div')代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM