Question

Je viens de recevoir et de contourner un problème avec LightWindow et IE7 où, au chargement de la page, il renvoie une erreur JavaScript à la ligne 444 de lightwindow.js, affirmant que le object does not support this property or method.Malgré la recherche de divers messages sur divers forums, aucun résultat Google que j'ai pu trouver n'avait de solution, je publie donc ceci ici dans l'espoir que cela aidera quelqu'un / moi-même plus tard.

Beaucoup ont suggéré un ordre spécifique pour les fichiers script mais j'utilisais déjà cet ordre (prototype, scriptaculous, lightwindow).

Ce sont les étapes que j'ai suivies qui ont finalement semblé fonctionner, je les écris ici uniquement à titre d'enregistrement car je ne sais pas et n'ai pas le temps de tester lesquelles ont spécifiquement "résolu" le problème :

  1. Déplacement de l'appel à lightwindow.js vers le bas de la page.
  2. Modification de la ligne 444 comme suit : if (this._getGalleryInfo(link.rel)) {
  3. Modification de la ligne 1157 comme suit : if (this._getGalleryInfo(this.element.rel)) {
  4. Finalement, j'ai joint (et c'est sale, mes excuses) les lignes 1417 à 1474 avec un try/catch bloquer, avalant l’exception.

MODIFIER:

J'ai réalisé que cela cassait Firefox.L'ajout de ce qui suit à la ligne 445 le fait maintenant fonctionner - try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

Ce n'est pas une solution très intéressante, mais ma page (qui contient un lien lightwindow sans balise "rel", plusieurs liens lightwindow qui ont des balises "rel" et un lien "en ligne") fonctionne très bien dans IE7 maintenant.Veuillez commenter si vous avez quelque chose à ajouter sur ce problème ou sur des problèmes/améliorations de ma solution donnée.

Était-ce utile?

La solution

J'ai résolu ce problème en remplaçant la ligne 444 par :

var gallery = this._getGalleryInfo(link.rel)

Puis en changeant l'instruction de comparaison suivante en :

if(gallery.length > 0)
{
    // Rest of code here...

... qui semble l'avoir trié dans IE6+ et l'avoir fait fonctionner dans Firefox, etc.

Je n'ai pas du tout modifié la ligne 1157, mais je n'ai pas lu le code pour voir ce que je fais réellement donc je ne peux pas me prononcer sur sa pertinence ?

Je soupçonne le ?utilisé dans l'exemple d'attribut rel (Evoution?[man]) peut être à l'origine du problème avec IE mais sans passer du temps à tester quelques éléments, je ne peux pas en être sûr ?

HTH.

Autres conseils

Au lieu de try..catch, vous pourriez peut-être essayer d'utiliser

if( this && this._getGalleryInfo )
{
    //use the function

}

tu peux aussi vérifier de la même manière this.element.rel ( if(this && this.element && this.element.rel) ...) avant de l'utiliser.

Il semble qu'il y ait un cas où _getGalleryInfo ou this.element.rel n'a pas encore été initialisé donc il n'existerait pas encore.Vérifiez s'il existe, puis si je l'utilise.

bien sûr, je peux me tromper complètement, la seule façon de le savoir est de le tester.

J'ai eu le même problème avec Lightwindow 2.0, IE6, IE7, IE8 (bêta) ;J'ai résolu de la manière suivante pour IE6, IE7, IE8 (bêta).

Au lieu de:
 if(gallery = this._getGalleryInfo(link.rel))
J'ai mis les lignes 443 et 1157 :
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

J'espère que cela aidera!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top