2 votes

jQuery détecte les images cassées trop tard

J'essaie de détecter les images cassées dans jQuery, auquel cas je veux les supprimer et les remplacer par leur texte alt. J'utilise le code suivant que j'ai trouvé ici sur SO ;

$(document).ready(function(){
    $('img.logoimg').error(function() {
        $(this).unbind("error");
        $(this).parent().prepend("<strong>"+$(this).attr("alt")+"</strong>");
        $(this).remove();
    });
    //...
}

Cela fonctionne bien dans FF.

Dans Chrome, cependant, le navigateur affiche toujours un carré indiquant que l'image est cassée. Il semble que le error se déclenche trop tard pour détecter l'image cassée.

Est-il possible de le faire brûler plus tôt ? Y a-t-il un autre problème avec le code ?

[Editer] Ajout d'une solution ci-dessous. Toute personne capable d'expliquer ceci gagne la solution à cette question.

0voto

Bart Vangeneugden Points 2268

J'ai identifié le problème par élimination. Il n'est pas là où l'on pourrait le penser. Sous mes balises script, j'avais un code Google Ads :

<script type="text/javascript" src="my_javascript.js"></script>
<script type='text/javascript' src='http://partner.googleadservices.com/gampad/google_service.js'></script>
<script type='text/javascript'>GS_googleAddAdSenseService("ca-pub-XXXXXXXXXXXXXX");GS_googleEnableAllServices();</script>
<script type="text/javascript">
    GA_googleAddSlot("ca-pub-XXXXXXXXXXXXXX","banner_1");
    GA_googleAddSlot("ca-pub-XXXXXXXXXXXXXX","banner_2");
    GA_googleAddSlot("ca-pub-XXXXXXXXXXXXXX","banner_3");

    GA_googleFetchAds();
</script>

C'est le dernier appel : GA_googleFetchAds() qui le tue. La suppression de cet appel semble résoudre mon problème. Étrangement.

J'ai maintenant résolu le problème de la manière suivante :

$(document).ready(function(){
    GA_googleFetchAds();
});

Toute personne ayant une explication raisonnable mérite mon respect et ma gratitude éternels.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X