动态加载Javascript文件时不执行Javascript

动态加载Javascript文件时不执行Javascript,javascript,Javascript,我正在动态加载一个JavaScript文件。加载此文件的请求的响应中包含JavaScript,我希望执行JavaScript,但实际上没有 这不起作用(远程脚本的JS不执行): 然而,这确实有效(脚本的JS执行): 我错过了什么?为什么这在第一种情况下不起作用?请试试这个 使用head代替body var head = document.getElementsByTagName('head')[0]; var script = document.createElement('scrip

我正在动态加载一个JavaScript文件。加载此文件的请求的响应中包含JavaScript,我希望执行JavaScript,但实际上没有

这不起作用(远程脚本的JS不执行):

然而,这确实有效(脚本的JS执行):

我错过了什么?为什么这在第一种情况下不起作用?

请试试这个

使用
head
代替
body

var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = "https://pixel.adbuyer.com/conversion";
    head.appendChild(script);
script.onload = function () {alert(1);}

@apsillers可以,但我在JSFIDLE之外也有同样的问题。我正在自己的服务器上测试。可能的重复(该问题集
script.async=true
,但对于动态添加的脚本,默认情况下是这样)简而言之,脚本确实加载并运行,但是
文档。write
指令(组成整个脚本)不在异步代码中运行。这里的解决方案是1)同步加载脚本,2)重写代码,或3)临时覆盖
文档。写入
以执行其他操作(如使用非
文档的方法检查HTML字符串和插入DOM对象。写入
方法)。@apsillers Ok,这更有意义。由于mozilla错误,我无法使用第二种方法加载脚本。有什么建议吗?有关如何执行我的超级黑客第三个建议的示例,请参阅(但将
删除文档。将
写入其他地方,在完成所有三个调用后运行)。这没有什么区别。远程文件中的JavaScript仍然不执行。
var SWJsHost = (("https:" == document.location.protocol) ? "https://" : "http://");
document.write(unescape("%3Cscript src='" + SWJsHost + "pixel.adbuyer.com/conversion' type='text/javascript'%3E%3C/script%3E"));
var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = "https://pixel.adbuyer.com/conversion";
    head.appendChild(script);
script.onload = function () {alert(1);}