2015-09-24 3 views
0

Может кто-нибудь, пожалуйста, помогите мне с этим скриптом? Он предназначен для обнаружения рекламного блока. У меня есть <script src="/js/ads.js"></script> в голове (пустой ads.js в папке). Adblock будет блокировать это от загрузки, не находясь на странице. Тогда у меня есть код ниже, который будет определять, загружен ли сценарий или нет. По какой-то причине он работает неправильно и все еще отображает изображения. У меня был кто-то, который написал сценарий ниже, а также для проверки объявлений 3 раза с интервалом в 1 секунду, но он, кажется, проверяет бесконечно 3 раза одновременно. Может кто-то, пожалуйста, помогите мне работать правильно? А также, если он обнаруживает, что он правильно загружается, он не будет вставлять изображения в div?скрипт для обнаружения рекламного блока не работает

<script> 
 
$(document).ready(function() { 
 
    var count = 3; 
 
    for (var i = 0; i < count; i++) { 
 
     setInterval(function() { 
 
      if (window.canRunAds === undefined) { 
 
       $('#StEQBidTjU').prepend('<img src="/miscimg/mZKoARJXcF.jpg" id="PtZZtkYjaR" />') 
 
       $('#AbHPbbbxyl').prepend('<img src="/miscimg/6hZ4nqcBZd.jpg" id="PLyCMzOHpx" />'); 
 
      } 
 
     }, 1000); 
 
    } 
 
}); 
 
</script>

+0

* «Кажется, он проверяет бесконечно» * - Функция 'setInterval()' будет вызывать функцию, которую вы передаете ей повторно - это то, что она должна делать. Вместо этого используйте 'setTimeout()'. – nnnnnn

+0

'ads.js' не должно быть пустым, оно должно содержать' var canRunAds = true; '. См. Http://stackoverflow.com/questions/4869154/how-to-detect-adblock-on-my-website – Barmar

+0

@nnnnnn Мои знания об этом ДЕЙСТВИТЕЛЬНО основаны на том, что я почти ничего не знаю. Не могли бы вы мне помочь и сказать, что конкретно изменить? – Lion

ответ

1

Вы должны следить за подсчетом в каждом интервале, и очистить его, как только он побежал в 3 раза.

$(document).ready(function() { 
 
    var count = 3, 
 
     interval = setInterval(function() { 
 
      if (--count < 0) { 
 
      clearInterval(interval); 
 
      } 
 
      if (window.canRunAds === undefined) { 
 
      $('#StEQBidTjU').prepend('<img src="/miscimg/mZKoARJXcF.jpg" id="PtZZtkYjaR" />') 
 
      $('#AbHPbbbxyl').prepend('<img src="/miscimg/6hZ4nqcBZd.jpg" id="PLyCMzOHpx" />'); 
 
      } 
 
     }, 1000); 
 
});

+0

@TinyGiant спасибо! –

+0

Это работает потрясающе, но теперь оно вставляет изображение 4 раза. Есть ли способ, которым я мог бы заменить его, может быть, если у вас уже есть изображение или что-то, чтобы его решить, это было 4 раза? – Lion

+0

@ Lion хорошо, вы добавили элемент, о котором я ничего не знаю. Не могли бы вы просто переписать содержимое каждый раз (используя метод html вместо prepend)? –

0

Теперь вам даже не нужно делать все это для обнаружения пользователей AdBlock, Вы можете добиться этого с помощью простой JS скрипт ABDetector
Вот как его использовать:
- Скачать/Clone проект, загрузите файл abDetector.min.js
- это в вашем <head>:
<script type="text/javascript" src="abDetector.min.js"></script>
- Используйте это место, куда вы хотите, чтобы отобразить сообщение для пользователей AdBlock:
<div id="ab-message" style="display: none">Your message here!</div>

Тогда вы сделали. Посмотрите проект на Github.

Смежные вопросы