Skrypt sprawdzający blokery reklam - div ukryty ?

Znalazłem

(function () {
  window.setTimeout(function () {
    if ($('.adsbox').height() === 0 || $('.adsbox').filter(':visible') === 0) {
      $('.reklama-info').show();
    }
  }, 1000);
})();

i teraz pytanie. Skrypt wykrywa, że div adsbox ma 0 więc wyświetla div’a reklama-info. Tylko gdzie zamieścić div’a reklama-info aby nie wyświetlało się dopóki nie zostanie wykryte że div adsbox ma 0 ?

Umieszczasz go gdzie chcesz, ogólnie ostylowujesz go tak jak chcesz by wyglądał/zachowywał się po wykryciu blokowania reklam, jak już to masz do głównego kontenera .reklama-info dodajesz displa:none. Gdy powyższy skrypt wykryje że reklamy są zablokowane w tej linijce:
$(’.reklama-info’).show();
Ustawi na kontenerze .reklama-info wartość displa: block;

Nie działa mi to…

<script> (function () {
  window.setTimeout(function () {
    if ($('.adsbox').height() === 0 || $('.adsbox').filter(':visible') === 0) {
      $('.reklama-info').show();
    }
  }, 1000);
})();
</script>

<div class="reklama-info" style="visibility:hidden;"> Informacja </div>

Widget ceneo i skapca mam w
< div class=“adsbox”>
tu kod do reklamy ceneo i skapca
< /div>
spacje są specjalnie bo forum nie pokazuje tego bez spacji.

Teoretycznie przy włączonym adblocku powinno wyświetlić się “Informacja” a nie pokazuje się nic.

Zobacz co Ci napisałem wyżej, masz ustawić display: none a nie visiblility: hideen. Druga sprawa to czy masz załadowaną bibliotekę jQuery na przed skryptem?

1 polubienie

mam
<script type="text/javascript" src="/wp-content/moje/jquery-3.2.1.min.js"></script>
i jest w źródle strony oraz po kliknięciu na odnośnik otwiera się js. Czyli odnośnik do js poprawny.

Zaraz sprawdzę aby zamienić to co wyzej pisałeś.

Jesteś niemożliwy @Fizyda !

Działa !!

A da się zrobić tak by DIV (reklama-info) miał losową nazwę ?

Da radę, generujesz sobie nazwę jak chcesz i wyświetlasz ją w tym divie, teraz trudniejsza część, tą samą nazwę musisz przekazać do skryptu, jeśli skrypt masz zahardcodowany w pliku html, a nie ładujesz go z zewnętrznego liku to robisz to tam samo jak w przypadku diva, a jeśli nie to musisz jakoś przesłać do skryptu nazwę klasy lub id obiektu który ma być w skrypcie wyświetlony - sposobów jest co najmniej kilka.

Jeśli masz do czynienia z opcją pierwszą czyli skrypt bezpośrednio w htmlu to może to wyglądać np tak:

<?php

	$className = "reklama-info-" + rand(1000,99999);

...

?>
	<div class="<?php echo $className; ?>" style="display: none;"> Informacja </div>

...

	<script> (function () {
	  window.setTimeout(function () {
		if ($('.adsbox').height() === 0 || $('.adsbox').filter(':visible') === 0) {
		  $('.<?php echo $className; ?>"').show();
		}
	  }, 1000);
	})();
	</script>

...
1 polubienie

Niestety nie wyświetla się treść DIV’a reklama-info.

<?php$className
$className = "reklama-info-" + rand(1000,99999);
...
?>

Gdzie to włożyć ?

Obecnie wygląda to (bez tych zmian z ostatniego Twojego postu)

    <script async> (function () {
      window.setTimeout(function () {
        if ($('.reklama').height() === 0 || $('.reklama').filter(':visible') === 0) {
          $('.re-info').show();
        }
      }, 3000);
    })();
    </script>
    // to jest tekst który jest nad reklamami i jest stale widoczny
    <link rel="stylesheet" type="text/css" href="/wp-content/moje/xyz.css" />
    <div class="ceneoskapiec">
    <h2 class="dark-text">tekst1</h2><div class="ceneoskapiec1">Tekst2</div>
    </div>
    // koniec tego tekstu
    <div class="re-info" style="display: none;">TEKST KTÓRY MA SIĘ WYŚWIETLAĆ  PO ZABLOKOWANEJ REKLAMIE</div>
    <div class="reklama">
    KOD REKLAMY
    </div>

Usunąłem wszystkie formatowania tekstu itp, taki goły szkielet dałem, może już tutaj jest błąd ?

Nie potrzebujesz async w script bo on jest ładowany razem ze stroną więc to i tak nie działa w żaden sposób.
Strona jest stworzona w php czy samym html’u? Ciężko stwierdzić czy jest gdzieś błąd bo niestety nie mam interpretera php i js w oczach.

W poprzednim moim poście był mały błąd w pseudokodzie, ale go już poprawiłem. Nazwa zmiennej wepchnęła się dodatkowo w pierwszej linii.

1 polubienie