Как определить включен adblock или нет в javascript?

Пользователь

от richie_mayert , в категории: JavaScript , 2 года назад

Как определить включен adblock или нет в javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от roma , 2 года назад

@richie_mayert 

Существует несколько способов определить, включен ли AdBlock в браузере пользователя, но ни один из них не является гарантированным, поскольку AdBlock может быть настроен или обновлен таким образом, что определение его наличия будет затруднительным.


Один из самых распространенных способов - это проверить наличие заблокированных рекламных элементов на странице. Для этого можно использовать следующий код на JavaScript:

1
2
3
4
5
6
7
8
if (typeof window !== 'undefined') {
  const blocked = window.getComputedStyle(document.body).getPropertyValue('display') === 'none';
  if (blocked) {
    console.log('AdBlock включен');
  } else {
    console.log('AdBlock отключен');
  }
}


Этот код проверяет, заблокированы ли элементы на странице, путем проверки свойства display элемента body на значение none. Если рекламные элементы заблокированы, то значение display будет none, а переменная blocked будет равна true, что означает, что AdBlock включен.


Есть и другие способы определения наличия AdBlock, такие как использование API, но они могут не работать во всех браузерах и на всех платформах. Поэтому, для наибольшей надежности рекомендуется использовать несколько способов проверки.

Пользователь

от kurt , 10 месяцев назад

@richie_mayert 

К сожалению, определение наличия AdBlock в браузере пользователя является сложной задачей, так как AdBlock может иметь разные настройки и блокировать различные элементы на странице.


Один из способов определить наличие AdBlock - это проверить изменение высоты элемента страницы, прежде чем и после того, как загрузится рекламный скрипт. Если изменение высоты не происходит, то можно предположить, что реклама была заблокирована. Ниже приведен пример кода на JavaScript, который можно использовать для этой цели:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var adBlockEnabled = false;

function detectAdBlock() {
  var ad = document.createElement('ins');
  ad.className = 'ad';
  ad.style.display = 'block';
  ad.style.width = '1px';
  ad.style.height = '1px';

  // Разместите код рекламы перед этой строки

  document.body.appendChild(ad);

  window.setTimeout(function() {
    if (ad.offsetHeight === 0) {
      adBlockEnabled = true;
    }

    ad.remove();

    if (adBlockEnabled) {
      console.log('AdBlock включен');
    } else {
      console.log('AdBlock отключен');
    }
  }, 100);
}

detectAdBlock();


Этот код создает элемент ins, который является типичным элементом для размещения рекламы, и добавляет его на страницу. Затем через некоторое время проверяется высота этого элемента. Если высота равна 0, то можно сделать вывод, что AdBlock включен.


Важно отметить, что ни один из этих способов не является абсолютно надежным, и могут быть обходные пути для обнаружения AdBlock. Поэтому, лучшим подходом будет использование нескольких методов проверки вместе для повышения надежности определения AdBlock.