Firefox macht Probleme mit history.back() in iFrame
Tobias Stening
- javascript
0 Kalle_B
Hallo,
ich habe ein etwas verzwicktes Problem. Ich muss eine Seite in einem iFrame anzeigen. Klicke ich dort auf einen Link, wird die Zielseite erstmal auch in dem iFrame geladen. Da ich das verhindern will und leider keinen Zugriff auf den Link habe, um diesem ein target="_blank" mitzugeben, habe ich in der Zielseite folgendes eingebaut:
if (top != self) {
window.open(self.location, "_blank", "width=500,height=600,left=200,top=200,resizable=yes,scrollbars=yes");
}
history.back();
}
Die Zielseite wird also erstmal im iFrame angezeigt, lädt sich dann aber gleich selbst in einem externen Fenster und ruft dann history.back() auf, um im iFrame wieder die Ausgangseite anzuzeigen. Das funktioniert im IE auch ganz prima. Im Firefox habe ich aber nun das Problem, dass es beim ersten Mal funktioniert. Beim zweiten Mal bleibt die History stehen, d.h. weder per history.back() noch per Klick auf den Zurück-Button im Browser geschieht etwas. Erst nach einem kompletten Reload der Seite funtkioniert es wieder.
Hat jemand eine Idee, was ich da machen könnte? Oder handelt es sich um einen Bug im Firefox, den man nicht umgehen kann?
Habe auch schon
Viele Grüße,
Tobias
Hallo,
if (top != self) {
window.open(self.location, "_blank", "width=500,height=600,left=200,top=200,resizable=yes,scrollbars=yes");
}
history.back();
}
Wieso hast du zwei schliessende geschweifte Klammern?
Manchmal sind es ja solche "Kleinigkeiten", die einen Fehler hervorrufen.
Kalle
ich nochmal, habe vesucht, deine Lösung nachzuvollziehen.
if (top != self) {
window.open(self.location, "_blank", "width=500,height=600,left=200,top=200,resizable=yes,scrollbars=yes");
}
history.back();
}
Du prüfst also, ob eine Seite im ursprünglichen window geöffnet wurde.
Wenn nein, machst du ein neues Fenster auf und lädst dieselbe Seite in das window _blank. Die alte Seite macht danach noch ein
history.back().
Wenn ja, machst du nur history.back(). Warum? Willst du die neue Seite nicht anzeigen?
Die Seite, die da in _blank geladen wurde, prüft wieder, ob sie im ursprünglichen Fenster geöffnet wurde. Das kann ja nie der Fall sein, also öffnet sie sich in einem weiteren Fenster selbst. Denn _blank ist ja immer ein weiteres Fenster. Und immer so weiter.
Könnte es sein, dass bei Firefox der Windows- Blockierer das endlose Öffnen von Fenstern verhindert? Während der IE das vielleicht einmal zulässt?
Oder ich habe deinen Code falsch interpretiert.
Kalle
ich nochmal, habe vesucht, deine Lösung nachzuvollziehen.
if (top != self) {
window.open(self.location, "_blank", "width=500,height=600,left=200,top=200,resizable=yes,scrollbars=yes");
}
history.back();
}Du prüfst also, ob eine Seite im ursprünglichen window geöffnet wurde.
Wenn nein, machst du ein neues Fenster auf und lädst dieselbe Seite in das window _blank. Die alte Seite macht danach noch ein
history.back().Wenn ja, machst du nur history.back(). Warum? Willst du die neue Seite nicht anzeigen?
Tut mir leid, hab den Code falsch gepostet. :-( Er soll eigentlich so heissen:
if (top != self) {
window.open(self.location, "_blank", "width=500,height=600,left=200,top=200,resizable=yes,scrollbars=yes");
history.back();
}
Also genau Deine Interpretation:
Du prüfst also, ob eine Seite im ursprünglichen window geöffnet wurde.
Wenn nein, machst du ein neues Fenster auf und lädst dieselbe Seite in das window _blank. Die alte Seite macht danach noch ein
history.back().
Und genu dieses history.back() im alten Fenster bzw. iFrame, macht im Firefox Probleme. Es funktioniert meist nur 1x. Beim nächsten Aufruf bleibt die gesamte History des Firefox stehen. Nichtmal der Zurückbutton des Browsers funktioniert.
Gruss, Tobias