Bonjour

Voici le code d'un plugin jquery par soucis de lisibilité j'ai enlevé tout ce qui n'est pas lié à mon problème.

(function($){    
    $.fn.njbox=function(options)
    {
        var defauts=
        {
            variables.....  
        }; 
        var param=$.extend(defauts, options);
        var full_img= new Image();
            full_img.src='';

        return this.click(function(e)   
        {   

            e.preventDefault();
            ......
            NJchange(); 
        });     
        function NJonload()
        {
            NJredim_taille();
            NJrefesh_size();
        };

        function NJrefesh_size()
        {   
            .....
        };  
        function NJredim_taille()
        {   
            Utilisation de full_img.width et de full_img.heigt qui a la première utilisation sont egale à 0;
        };
        function NJchange()
        {   
            full_img=new Image();
            full_img.src=liste[ind].lien;
            $('body').prepend('<div>NJchange</div>');
            //do {alert(full_img.width); } while (full_img.width == 0);
            $(full_img).ready(NJonload()); // ne semble pas fonctionner
        };  
    };
})(jQuery);

Comme vous pouvez le voir dans les commentaires la fin de chargement ne semble pas êter détecter sous firefox, la fonction NJonload est lancer dans tous les cas.
Le pire c'est que ca marche (ou en tout cas semble marcher) sous IE.

Nb pour le moment je fonctionne en local sur mon pc.

Merci de votre aide.

4 réponses


s4p
Réponse acceptée

Salut,
onload et ready fonctionnent sur mon Firefox 17.0.1

<!DOCTYPE html>
<html lang="fr">
    <head>
        <!--<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>-->
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title></title>
        <!-- jQuery -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $('img')
                    .ready(function(){ console.log('ready ok'); })
                    .load(function(){ console.log('load ok'); });
            });
        </script>
    </head>
    <body>
        <img src="http://lastucealoreille.unblog.fr/files/2010/03/chameau.jpg">
    </body>
</html>
s4p
Réponse acceptée

dans le premier cas tu passes une fonction pour le callback alors que dans le deuxième c'est le résultat de NJonload que tu donnes en callback.
si dans NJonload tu as return function(){ ... } ça devrait fonctionner.

Njsan
Auteur

Il sembmerait que j'ai trouvé

$(full_img).ready(function(){NJonload();});

et non

$(full_img).ready(NJonload());

Quelqqu'un saurait m'expliquer la différence et pourquoi ?

PS: si c'est ca j'aurais mis 1 mois et essayer presque tout sauf çà :((

Njsan
Auteur

Mci, la subtilité m'avait complètement échappé.