以下代码在页面上运行:
(function() {
function asyncLoad() {
var urls = ["https://something.com/script.js"];
for (var i = 0; i < urls.length; i++) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = urls[i];
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
}
window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);
})();
//]]>
我需要一个事件监听器,当该文件在DOM中可用时触发。
我需要利用此脚本中的变量。
我需要知道何时加载https://something.com/script.js
,如果不加载,我想要备份。如果文件未在指定的时间段内加载,则会发生这种情况。
或者,我可以在script.js文件中提供变量时使用事件。
答案 0 :(得分:1)
如果您的script.js
中有一个函数,例如function a()
,那么您可以抓住它,如果可以的话
var checkScript = function(){
if (typeof a === "function"){
//fire event
}else{
setTimeout(checkScript, 1000);
}
}
checkScript ();
答案 1 :(得分:1)
脚本元素支持load事件,所以你应该在将脚本元素插入DOM之前在脚本元素上设置它,例如。
s.src = urls[i];
s.onload = asyncLoad; // add load listener
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
如果您想知道它是否成功到达,请使用XMLHttpRequest获取内容,然后将其分配给脚本元素的 text 属性。这样您就可以知道脚本是否已被检索,在发生故障时设置超时并采取纠正措施,同时不锁定浏览器。