2009-07-22 7 views
2

J'essaie d'intégrer un javascript appelé ImageFlow dans un site Joomla, mais je reçois une erreur dans Internet Explorer (v8 native et mode de compatibilité) et il a gagné ' t affichage. Cela fonctionne bien dans Firefox et d'autres navigateurs).Conflit entre mootools et un autre script (non-framework)

Je crois que l'erreur est liée à mootools. Détails de l'erreur:

Message: Cet objet ne gère pas cette propriété ou méthode
Ligne: 48
Char: 27
code: 0
URI: [domaine]/media/system/js/Mootools .js

message: cet objet ne gère pas cette propriété ou méthode
ligne: 953
Char: 4
code: 0
URI: [domaine] /media/imageflow/imageflow.js

Le début de la ligne 48 mootools (minified) est:

if(!this.addEventListener)fn=fn.create({'bind':this,'event':true}); 

Le code pertinent est ImageFlow:

/* Just in case window.onload happens first, add it to onload 
using an available method.*/ 
if(typeof addEvent !== "undefined") 
{ 
    addEvent(window, "load", run); // <-- line 953 
} 
else if(document.addEventListener) 
{ 
    document.addEventListener("load", run, false); 
} 
else if(typeof window.onload === "function") 
{ 
    var oldonload = window.onload; 
    window.onload = function() 
    { 
     domReadyEvent.run(); 
     oldonload(); 
    }; 
} 
else 
{ 
    window.onload = run; 
} 

Répondre

3

J'ai trouvé une solution: supprimer la première clause if du code imageflow. Je ne sais pas si c'était là pour les navigateurs hérités peut-être, mais sans cela, le script fonctionne parfaitement bien dans IE 6-8 et les navigateurs appropriés.

+0

bien, mootools définit addEvent mais comme une méthode pas une fonction. donc addEvent (fenêtre, "load", run); échoue - la façon correcte de mootools de le faire serait: window.addEvent ("domready", function() { run(); }); –

0

J'ai eu un problème similaire une fois avec lightbox et mootools. Je l'ai résolu en trouvant une implémentation de lightbox basée sur mootools (ce qui était vraiment mieux). Si vous ne pouvez pas, alors je suggère de mettre l'ImageFlow dans un iframe, de sorte que les deux scripts ne seront pas en conflit.