我试图获取一些脚本,然后运行初始化函数,如果用户没有广告拦截器,但如果有广告拦截器,ads-script.js
被net::ERR_BLOCKED_BY_CLIENT
阻止,我的.done
回调永远不会被解雇所以我页面上的js永远不会被初始化。我试图对$.getScript
和$.when
函数进行失败/错误回调,但它们也没有被击中。有没有人知道一种方法来捕获被阻止的get脚本调用(或沿着这些行的东西),处理该错误并确保done
回调被击中。谢谢
$.when(
$.getScript( "http://example.com/script1.js" ),
$.getScript( "http://example.com/script2.js" ),
$.getScript("http://example.com/ads-script.js"),
$.Deferred(function( deferred ){
$( deferred.resolve );
})
).done(function() {
console.log('here');
initialize();
});
$.when
返回jQuery Promise
。如果您想从中捕获错误,请使用.fail()
:
$.when(
$.getScript( "http://example.com/script1.js" ),
$.getScript( "http://example.com/script2.js" ),
$.getScript("http://example.com/ads-script.js"),
$.Deferred(function( deferred ){
$( deferred.resolve );
})
).done(function() {
console.log('here');
initialize();
}).fail(function(err) {
console.log('i am an error handler', err)
});
很老的帖子,但我想分享这个。
var sc = document.createElement("script");
sc.setAttribute("src", "https://yourhost/advertisement/ads.js");
sc.setAttribute("onerror", "someAction()");
sc.setAttribute("type", "text/javascript");
sc.setAttribute("onload", "someAction()");
document.head.appendChild(sc);