Frage

Ich habe gerade ein Problem mit LightWindow und IE7 erhalten und umgangen, bei dem beim Laden der Seite ein JavaScript-Fehler in Zeile 444 von ausgegeben wird lightwindow.js, behauptet, dass die object does not support this property or method.Obwohl ich verschiedene Beiträge in verschiedenen Foren gefunden habe, konnte ich bei keinem Google-Ergebnis eine Lösung finden, daher poste ich dies hier in der Hoffnung, dass es später jemandem/mir selbst hilft.

Viele haben eine bestimmte Reihenfolge der Skriptdateien vorgeschlagen, aber ich habe diese Reihenfolge bereits verwendet (Prototyp, Skriptaculous, Lightwindow).

Dies sind die Schritte, die ich unternommen habe und die schließlich zu funktionieren schienen. Ich schreibe sie hier nur als Protokoll, da ich weder weiß noch Zeit habe, sie zu testen, welche das Problem konkret „behoben“ haben:

  1. Der Aufruf von lightwindow.js wurde an das Ende der Seite verschoben.
  2. Zeile 444 geändert in: if (this._getGalleryInfo(link.rel)) {
  3. Zeile 1157 geändert in: if (this._getGalleryInfo(this.element.rel)) {
  4. Abschließend habe ich (und das ist leider schmutzig) die Zeilen 1417 bis 1474 mit a versehen try/catch blockieren und die Ausnahme verschlucken.

BEARBEITEN:

Mir wurde klar, dass dies Firefox kaputt gemacht hat.Wenn Sie jetzt Folgendes als Zeile 445 hinzufügen, funktioniert es: try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }

Es ist keine sehr schöne Lösung, aber meine Seite (die einen Lightwindow-Link ohne „rel“-Tag, mehrere Lightwindow-Links mit „rel“-Tags und einen „Inline“-Link enthält) funktioniert jetzt in IE7 einwandfrei.Bitte kommentieren Sie, wenn Sie etwas zu diesem Problem oder zu Problemen mit bzw. Verbesserungen an meiner angegebenen Lösung hinzufügen möchten.

War es hilfreich?

Lösung

Ich habe das Problem behoben, indem ich Zeile 444 wie folgt geändert habe:

var gallery = this._getGalleryInfo(link.rel)

Ändern Sie dann die nachfolgende Vergleichsanweisung wie folgt:

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

...was es anscheinend in IE6+ sortiert hat und es in Firefox usw. funktionsfähig gehalten hat.

Ich habe Zeile 1157 überhaupt nicht geändert, aber ich habe den Code nicht gelesen, um zu sehen, was ich tatsächlich mache, daher kann ich nichts zur Relevanz sagen?

Ich vermute das ?Das im Beispiel verwendete rel-Attribut (Evoution?[man]) kann das Problem mit dem IE verursachen, aber ohne einige Zeit damit zu verbringen, ein paar Dinge zu testen, kann ich nicht sicher sein?

HTH.

Andere Tipps

Anstelle von try..catch könnten Sie es vielleicht mit versuchen

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

}

Sie können dies auch auf die gleiche Weise überprüfen dieses.element.rel ( if(this && this.element && this.element.rel) ...), bevor Sie es verwenden.

Es sieht so aus, als gäbe es einen Fall, in dem die _getGalleryInfo oder this.element.rel wurde noch nicht initialisiert und würde daher noch nicht existieren.Überprüfen Sie, ob es vorhanden ist und ob ich es verwende.

Natürlich könnte ich mich völlig irren, der einzige Weg, das herauszufinden, ist, es auszuprobieren.

Ich hatte das gleiche Problem mit Lightwindow 2.0, IE6, IE7, IE8 (Beta);Ich habe die folgende Lösung für IE6, IE7, IE8 (Beta) gefunden.

Anstatt:
 if(gallery = this._getGalleryInfo(link.rel))
Ich habe die Zeilen 443 und 1157 eingefügt:
 gallery = this._getGalleryInfo(link.rel)
 if(gallery)

Hoffe, das wird helfen!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top