2008-09-03 7 views
0

Je viens de recevoir et de contourner un problème avec LightWindow et IE7 où, au chargement de la page, il jette une erreur JavaScript sur la ligne 444 de lightwindow.js, affirmant que le object does not support this property or method. En dépit de trouver divers messages sur divers forums, aucun résultat de Google que je pourrais trouver n'avait de solution, donc je poste ceci ici dans l'espoir que cela aidera quelqu'un/moi-même plus tard.LightWindow et IE7, "Ligne 444 - objet ne supporte pas cette propriété ou méthode"

Plusieurs ont suggéré une commande spécifique des fichiers de script mais j'utilisais déjà cette commande (prototype, scriptaculous, lightwindow).

Ce sont les étapes de mon travail qui semblait enfin travailler, je les écris ici que comme un enregistrement que je ne sais pas, ni le temps de tester qui ceux qui sont spécifiquement « fixe » la question:

  1. Déplacé l'appel à lightwindow.js au bas de la page.
  2. ligne 444 à Changé: if (this._getGalleryInfo(link.rel)) {
  3. ligne Changed 1157 à: if (this._getGalleryInfo(this.element.rel)) {
  4. Enfin, je fermé (ce qui est sale, mes excuses) lignes 1417-1474 avec un bloc try/catch, avalant l'exception.

EDIT:

Je réalise que ce rompit Firefox. Ajout de ce qui suit que la ligne 445 maintenant le fait fonctionner - try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

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

Répondre

0

Je fixe en changeant la ligne 444 à:

var gallery = this._getGalleryInfo(link.rel) 

changer ensuite la déclaration de comparaison après:

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

... qui semble avoir trié dans IE6 + et a gardé travail dans Firefox etc.

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

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

HTH.

1

Au lieu du try..catch peut-être vous pouvez essayer d'utiliser

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

} 

vous pouvez 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 existe un cas où le _getGalleryInfo ou this.element.rel n'a pas encore été initialisé, il n'existe donc pas encore. Vérifiez s'il existe, si je l'utilise.

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

0

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

Au lieu de:
  if(gallery = this._getGalleryInfo(link.rel))
je mets sur les lignes 443 et 1157:
  gallery = this._getGalleryInfo(link.rel)
  if(gallery)

Espérons que cela aidera!

Questions connexes