关于异步加载的js中document.write无法生效的问题

越野千里 2019-07-26 01:32:22
类似以下引入的js片段

if(true)) {
document.write('<script src="https://xxx.js"><\/script>') --->这里会报错
}


网上查资料说
“因为document已经加载解析完毕,文档流已经关闭了
所以你异步加载的js不可以再往document里写东西了”

这些我都看的懂,但是给出的结论全是什么加上百度的统计代码或者直接说不知道的....


问下各位大佬有什么可行方案吗,求个可实行的代码,不要拿网上千片一律的糊弄我。
---真令人头秃
...全文
871 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cn00439805 2019-07-26
  • 打赏
  • 举报
回复

function loadScript(src) {
    return new Promise(resolve => {
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.onload = script.onreadystatechange = function () {
            if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
                resolve(arguments);
                script.onload = script.onreadystatechange = null;
            }
        };
        script.src = src;
        head.appendChild(script);
    });
}

loadScript("https://cpro.baidustatic.com/cpro/logo/js/logo.js").then(res => {
    console.log(res)
})
2019-07-26
  • 打赏
  • 举报
回复
可以创建script标签

var head= document.getElementsByTagName('head')[0]; 
var script= document.createElement('script'); 
script.type= 'text/javascript'; 
script.src= 'xxx.js'; 
head.appendChild(script); 
天际的海浪 2019-07-26
  • 打赏
  • 举报
回复
document.write()一般只在页面加载完成之前使用。 当页面加载完成之后,文档流会自动关闭,就不要用document.write()了 页面加载完成之后再使用document.write()就会重新创建一个新的页面。 这个新页面的源代码就是document.write()输出的字符串。 页面加载完成之后,要对页面内容改变和增加时应该用页面元素的 innerHTML, 或者用document.createElement()创建dom对象并用appendChild()添加到页面元素中。

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧