JS异步脚本无法执行

JS Asynchron script faild to execute

本文关键字:执行 脚本 异步 JS      更新时间:2023-09-26

我想包含一个带有javascript的adserver js脚本,并异步加载它。但每次尝试都会以警告结束,并且脚本不会执行。

我收到以下错误消息:"无法对"文档"执行"写入":除非显式打开,否则无法从异步加载的外部脚本写入文档。"

我尝试过以下变体:

    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = "http://example.com/test.js";
    document.body.appendChild(script);

或者我使用了HTML脚本属性async

<script src="http://example.com/test.js" async></script>

但是什么都没用,因为外部脚本使用document.write。有其他方法可以包含这样的脚本吗?

如何"显式打开"页面("除非显式打开它"-请参阅警告)?

一种方法是临时覆盖document.write,直到执行脚本,然后替换原始功能。

var tempDocWrite = document.write;
document.write = function(el){
    var div = document.createElement('div');
    div.innerHTML = el;
    document.body.appendChild(div)
}
var script = document.createElement('script');
script.onload = function(){
    document.write = tempDocWrite
}
script.type = 'text/javascript';
script.src = "http://example.com/test.js";
document.body.appendChild(script);

注意:尚未测试上述代码