es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Adsense me da un error si hago clic varias veces en el mismo enlace.

Estoy utilizando adsense (con Ruby on Rails 6) en localhost, tengo alrededor de 3 anuncios por página. Si ingreso a una página una vez y desde allí navego a otras páginas, no obtengo ningún error, pero si abro el mismo enlace varias veces, obtengo este error.

{ "message": "Error en adsbygoogle.push(): Todos los elementos ins del DOM con la clase=adsbygoogle ya tienen anuncios.",
"name": "TagError",
"pbr": true }

La llamada que hago al método mencionado en el error es la siguiente, que solo está en el archivo index.html (base html):

<script>
    [].forEach.call(document.querySelectorAll('.adsbygoogle'), function(){
        (adsbygoogle = window.adsbygoogle || []).push({});
    });
</script>

Intenté poner este código por separado debajo de cada anuncio:

<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>

y no funciona.

También intenté agregar un atributo “key” aleatorio a cada elemento y tampoco funcionó.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el error ocurre porque todos los elementos ins en el DOM con la clase “adsbygoogle” ya tienen anuncios en ellos. Este mensaje de error sugiere que hay múltiples instancias del mismo anuncio cargándose en la página.

    Una posible solución es agregar un ID único a cada espacio publicitario para evitar que los anuncios se dupliquen al navegar varias veces hacia la misma página. Podrías intentar modificar el código para que se vea así:

    <script>
      document.querySelectorAll('.adsbygoogle').forEach(function(ad, index) {
        (adsbygoogle = window.adsbygoogle || []).push({
          google_ad_client: 'TU_ID_DE_CLIENTE_DE_ADSENSE',
          enable_page_level_ads: true,
          slotname: ad.getAttribute('data-ad-slotname'),
          // Agregar un ID único a cada espacio publicitario
          slotid: 'ad-' + index
        });
      });
    </script>
    

    Ten en cuenta que deberás reemplazar “TU_ID_DE_CLIENTE_DE_ADSENSE” con tu propio ID de cliente de AdSense, y agregar un atributo “data-ad-slotname” a cada espacio publicitario con el nombre de la unidad de anuncios correspondiente.

    Alternativamente, podrías intentar utilizar un formato de anuncio diferente que no requiera múltiples espacios publicitarios en la misma página, como una unidad de anuncios responsiva o una unidad de anuncios de enlace.

    También es importante tener en cuenta que las políticas de AdSense prohíben tener múltiples unidades de anuncios en la misma ubicación de una página, por lo que es importante asegurarse de que la ubicación de tus anuncios cumpla con estas políticas.

Comments are closed.