Colorbox wird im IE nicht korrekt geladen

8

Ich habe eine Lösung gefunden, aber es ist nicht die beste, also suche ich immer noch nach einer Lösung. Sehen Sie meine Antwort für das, was ich getan habe.

UPDATE - Mein Fehler bleibt bestehen, wie unten beschrieben. ABER wenn ich IE Developer Tools öffne, geht der Fehler weg! Wenn ich den Browser schließe und den Fehler erneut öffne, erscheint der Fehler!

UPDATE 2 - Ich habe versucht, den folgenden Code in mein JS einzufügen, um zu sehen, ob das das Problem lösen würde und nicht:

%Vor%

Und dann das:

%Vor%

Ich habe auch meine JS-Dateien durchsucht und bin nie auf eine console.log-Funktion gestoßen, die den Fehler verursachen würde.

Dies ist ein kompliziertes Thema und ich werde mein Bestes geben, um es zu erklären. Ich setze Cookies auf einer Seite, die beim ersten Besuch einen Leuchtkasten zeigt. Es funktioniert hervorragend in FF, Chrome usw., aber nicht in IE.

Was passiert in IE ist das Skript zum Aufruf meiner Lightbox (Colorbox) Feuer aber alles, was ich sehe, ist der AJAX Loader dreht sich und der Inhalt lädt nie. Ich habe herausgefunden, dass das Skript zu früh ausgelöst wurde. Ich benutzte $j(document).ready(function() Ich wechselte zu: $j(window).load(function() und alles schien in Ordnung zu sein und es funktionierte richtig, bis ich von einer anderen Seite anfing und auf die oben erwähnte Seite kam.

Wenn ich auf einer anderen Seite anfange und auf einen Link klicke, habe ich das gleiche Problem! Der Cookie funktioniert ordnungsgemäß und zündet die Box kein zweites Mal.

Mit anderen Worten, wenn ich Cookies lösche und auf der Seite mit einem Problem beginne, dann kein Problem. ABER Wenn ich von einer anderen Seite (mit gelöschten Cookies) aus starte und auf die obige Seite gehe, wird die Farbbox nicht richtig geladen.

Von dem was ich sagen kann funktioniert $j(window).load(function() nicht richtig.

Ich erhalte keine Fehler von IE. Ich verwende IE 8 zum Testen und kann 9 nicht testen, da ich Windows XP verwende. (Ich habe gehört, dass es in IE 9 funktioniert, aber ich habe das nicht bestätigt) Das Skript befindet sich in <head> meines Dokuments. (Wenn ich das Skript in <body> verschiebe, wird die Seite komplett durchbrochen.)

Ich habe gelesen, dass Ausgaben von DOCTYPE nicht korrekt sind, oder short und colorbox Probleme in IE. Mein DOCTYPE ist wie folgt, was korrekt sein sollte:

%Vor%

Irgendwelche Gedanken oder Ideen werden sehr geschätzt!

Hier ist mein Code, den ich verwende:

JavaScript

%Vor%

HTML

%Vor%

Noch eine Anmerkung: Ich benutze jAlbum auf der Seite und ich sehe keine Konflikte, aber könnte es ein Problem geben? Ich kann diesen Code hier nicht posten, da er das Post-Limit für SO überschreiten würde.

Um diesen Fehler auszulösen, klicken Sie auf diese Seite . Daraufhin wird ein Leuchtkasten angezeigt. Klicken Sie auf Message Examples (untere linke Ecke der Lightbox oder erstes Element im Menü ohne Lightbox).

Hier finden Sie einen direkten Link zur Seite , falls erforderlich. (Wenn Sie direkt zur Seite gehen, wird der Fehler nicht ausgelöst.)

Ich habe versucht, window.onload = function() zu verwenden, und das gleiche Problem ist aufgetreten.

Ich habe versucht, den Event-Handler zu verwenden, um das Script auszulösen, nachdem das div geladen wurde, das das Script überhaupt nicht ausgelöst hat. Hier war dieser Code:

%Vor%     
L84 14.11.2011, 01:02
quelle

4 Antworten

7

Der Grund dafür, dass beim Öffnen von Entwicklertools nichts mehr passiert, ist, dass der IE mit den console.log-Anweisungen nicht gut spielt, bis Sie die Entwicklertools öffnen. Es muss irgendwo ein console.log sein. Es könnte in jeder Plugin-Datei oder Javascript-Datei sein, die Sie verwenden. Es tötet Javascript, das aus irgendeinem Grund danach läuft. Das Öffnen der Entwicklerwerkzeuge erkennt die console.log als JavaScript-Funktion (meine beste Schätzung) und so funktioniert es plötzlich.

    
rncrtr 21.11.2011, 23:23
quelle
3

Ich bin gerade auf dieses Problem gestoßen und obwohl diese Frage sehr alt ist, wollte ich sie immer noch für zukünftige Besucher einsetzen ...

Meine Version von colorbox, ColorBox v1.3.19.2, scheint eine Art Konsolenobjekt zurückzugeben. Dies ist wahrscheinlich der Grund, warum das Problem verschwindet, sobald Sie die Entwicklersymbolleiste geöffnet haben.

Meine Lösung bestand darin, die letzte Anweisung im colorbox-Skript zu ändern (kann für beide Versionen als minimierte Version verwendet werden). Das Skript endet mit

}(jQuery, document, this, console));

was ich durch

ersetzt habe

}(jQuery, document, this, null));

und jetzt funktioniert alles für mich.

    
barryvanveen 07.05.2012 15:31
quelle
1

Ich habe dieses Problem anscheinend gelöst, obwohl ich immer noch ein wenig verwirrt bin, warum der Fehler passiert ist. Ich werde erklären, was ich getan habe:

Zuerst verwende ich Dreamweaver Teamplates, um meine Webseite zu erstellen. Also sieht mein Code so aus.

%Vor%

Ursprünglich waren meine Skripte im Kopfbereich, wenn ich sie direkt vor den abschließenden Body-Tag legte, brach sie die Seite. Was ich getan habe, ist die Platzierung des Codes geändert. Ich habe den Lightbox-HTML ganz oben im <body> -Bereich platziert und dann das Skript, um den Leuchtkasten direkt darunter, aber über dem Seiteninhalt im Body-Abschnitt aufzurufen, und es hat funktioniert! Wenn jemand erklären kann, warum das funktioniert hat und mir helfen kann, zu verstehen, warum es nicht im Kopf funktioniert, sag es bitte.

    
L84 25.11.2011 23:15
quelle
0

Ich fing an, dies als Kommentar zu der Frage zu schreiben, aber es wurde sehr lang, also beschloss ich, es als Antwort zu schreiben. Ich weiß nicht, ob das das Problem lösen wird, aber ich denke, es ist einen Versuch wert.

  • Erstellen Sie eine neue Funktion, setCookieAfterFirstView , und rufen Sie den Aufruf $j.cookie in dieser Funktion
  • auf
  • Rufen Sie setCookieAfterFirstView function für onComplete callback von colorbox auf.

Auf diese Weise können Sie sicherstellen, dass keine anderen Anrufe mit dem Öffnen der Farbbox in Konflikt geraten. Vielleicht gibt es ein Problem von jQuery über verschiedene Plugins, die miteinander in Konflikt geraten, ich rate jetzt nur ..

%Vor%

Können Sie das versuchen und einen Kommentar zu dieser Antwort schreiben, ob es das Problem gelöst hat oder nicht?

    
melihcelik 28.11.2011 00:23
quelle