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.

Cómo solucionar el mensaje: “error de adsbygoogle.push(): No hay tamaño de ranura disponible para availableWidth=0” para anuncios de Google AdSense responsivos?

Actualmente estoy utilizando un diseño receptivo y hay dos unidades de Adsense que se mostrarán en la pantalla del usuario dependiendo del tamaño de la pantalla. El código se ve así:

<div id="ad_right" class="d-none d-md-inline">
    <ins class="adsbygoogle" style="display:block; margin-left:20px;" data-ad-client="ca-pub-rightslot" data-ad-slot="rightslot" data-ad-format="auto" data-full-width-responsive="true"></ins>
    <script>
        (adsbygoogle = window.adsbygoogle || []).push({});
    </script>
</div>

<div id="ad_bottom" class="d-md-none">
    <ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-bottomslot" data-ad-slot="bottomslot" data-ad-format="auto" data-full-width-responsive="true"></ins>
    <script>
        (adsbygoogle = window.adsbygoogle || []).push({});
    </script>
</div>

Como puedes ver, el anuncio derecho se muestra si los usuarios tienen una pantalla que coincide con el tamaño de una PC (md o más grande), y el anuncio inferior se muestra si los usuarios tienen una pantalla de móvil o tablet (xs o sm). El problema es que los elementos están ocultos pero el script siempre se ejecuta, por lo tanto, el código se ejecuta dos veces:

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

Lo que provoca el mensaje de error de Google Adsense. ¿Cómo puedo solucionar este problema? He intentado todo lo que he podido y no puedo resolver este problema.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema, puedes agregar declaraciones condicionales al script que solo permitan que se ejecute cuando los anuncios respectivos sean visibles en la pantalla del usuario. Aquí tienes un ejemplo de cómo hacerlo:

    <div id="ad_right" class="d-none d-md-inline">
        <ins class="adsbygoogle" style="display:block; margin-left:20px;" data-ad-client="ca-pub-rightslot" data-ad-slot="rightslot" data-ad-format="auto" data-full-width-responsive="true"></ins>
        <script>
            if (window.innerWidth >= 768) { // solo ejecutar el script si la pantalla es MD o más grande
                (adsbygoogle = window.adsbygoogle || []).push({});
            }
        </script>
    </div>
    
    <div id="ad_bottom" class="d-md-none">
        <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-bottomslot" data-ad-slot="bottomslot" data-ad-format="auto" data-full-width-responsive="true"></ins>
        <script>
            if (window.innerWidth < 768) { // solo ejecutar el script si la pantalla es XS o SM
                (adsbygoogle = window.adsbygoogle || []).push({});
            }
        </script>
    </div>
    

    De esta manera, los anuncios solo se cargarán cuando sea necesario, evitando que aparezca el mensaje de error.

Comments are closed.