Adblocker - Catch net :: ERR_BLOCKED_BY_CLIENT - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь получить несколько сценариев и затем запустить функцию инициализации, которая отлично работает, если у пользователя нет блокировщика рекламы, но если есть блокировщик рекламы, 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();
 });

Ответы [ 2 ]

0 голосов
/ 23 июля 2018

Очень старый пост, но я хотел бы поделиться этим.

 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);
0 голосов
/ 12 мая 2018

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