Frage

Ich öffne ein neues Browser-Fenster von meiner Seite für einige der Mitglieder. einige später jedoch schließen kann, oder es könnte zunächst zu öffnen versagt haben.

Gibt es ein Ausschnitt aus recht einfach Javascript, die auf jeder Seite ausgeführt werden können, um zu bestätigen, ob ein anderer Browser-Fenster geöffnet ist, und wenn nicht, einen Link zu öffnen Sie es erneut zur Verfügung stellen?

[Klarstellung:] Der Code zu überprüfen, ist ein Fenster geöffnet wird, würde auf anderen Seiten ausgeführt wird - nicht nur im selben Fenster und URL, die es geöffnet. Stellen Sie sich einen Benutzer anzumelden, das Fenster (versucht) offen ist, und dann in dem gleichen Tab / Fenster sie surfen um (oder anderen) für einige Zeit, bevor sie das zweite Fenster (oder es nie geöffnet) schließen - ich mag in der Lage sein, zu bemerken, hat das Fenster einige Zeit nach dem ersten Versuch einer Öffnung geschlossen / nachdem er geschlossen ist, so dass ich bin mir nicht sicher, dass ist die Javascript Rückkehr von window.open () (mit popup_window_handle.closed) leicht verwendet prüft oder in der Tat möglich .

War es hilfreich?

Lösung

Die ausgezeichnete, umfassende Artikel ( "Fast vollständige Kontrolle von Popup-Fenster ") sollten alle Ihre Fragen über javaScript-Popup-Fenster beantworten.

"JavaScript 1.1 auch das Fenster eingeführt geschlossen Eigenschaft. Verwendung dieser Eigenschaft ist es möglich, zu erkennen, ob ein Fenster und anschließend geschlossen geöffnet wurde. Wir können diese verwenden, um eine Seite zu laden direkt in den Fensterheber, wenn es noch offen für JavaScript 1.1-Browser aktiviert: "

<script language="JavaScript"><!--
function open_main(page) {
    window_handle = window.open(page,'main');
    return false;
}
//--></script>

<script language="JavaScript1.1"><!--
function open_main(page) {
    if (opener && !opener.closed) {
        opener.location.href = page;
    }
    else {
        window_handle = window.open(page,'main');
    }
    return false;
}
//--></script>

<a href="example.htm" onClick="return open_main('example.htm')">example.htm</a>

Addition: Sie können das Fenster-Handle zurück in einer anderen Seite erhalten, indem auf diese Weise das Popup-Namen verweisen:

window_handle = window.open(page,'myPopupName');

Ich denke, in Ihrem Fall, dass Sie über eine konsistente Art und Weise denken, sollten alle die Namen der Popup-Fenster in der gesamten Anwendung zu erstellen.

Andere Tipps

var myWin = window.open(...);

if (myWin.closed)
{
    myWin = window.open(...);
}

Es gibt keine universelle Möglichkeit, es zu prüfen, wie jeder Pop-up-Blocker ein anderes Verhalten hat. Zum Beispiel Opera wird das Pop-up nicht gezeigt, aber die widow.closed wird falsch zurück, wie hinter den Kulissen Opera eine Schattenkopie des blockierten Fensters halten, für den Fall, würde der Benutzer mag es sowieso sehen.

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