Adblocker - Catch net :: ERR_BLOCKED_BY_CLIENT

问题描述 投票:0回答:2

我试图获取一些脚本,然后运行初始化函数,如果用户没有广告拦截器,但如果有广告拦截器,ads-script.jsnet::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();
 });
javascript jquery adblock
2个回答
0
投票

$.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)
 });

0
投票

很老的帖子,但我想分享这个。

 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);
© www.soinside.com 2019 - 2024. All rights reserved.