5

一部のメンバーのために、自分のサイトから新しいブラウザ ウィンドウを開いています。ただし、後で閉じる場合や、最初に開くことができなかった場合もあります。

別のブラウザ ウィンドウが開いているかどうかを確認し、開いていない場合は再度開くためのリンクを提供するために、各ページで実行できるかなり単純な Javascript のスニペットはありますか?

[明確化:]ウィンドウが開いていることを確認するコードは、それを開いた同じウィンドウと URL だけでなく、他のページでも実行されます。ユーザーがログインし、ウィンドウを開こうとして(しようとして)、2番目のウィンドウを閉じる(または開かない)前に、しばらくの間同じタブ/ウィンドウ(または他のウィンドウ)でサーフィンすることを想像してください-私はできるようにしたいですウィンドウが最初に開かれた後/閉じられた後、しばらくしてウィンドウが閉じられたことに気付くため、window.open() (popup_window_handle.closed を使用) からの javascript の戻り値を確認することが簡単に使用できるか、実際に可能かどうかはわかりません。 .

4

3 に答える 3

4

この優れた包括的な記事 (「ポップアップウィンドウのほぼ完全な制御」)は、javascriptポップアップウィンドウに関するすべての質問に答えるはずです。

「JavaScript1.1ではウィンドウクローズプロパティも導入されました。このプロパティを使用すると、ウィンドウが開いてから閉じられたかどうかを検出できます。JavaScript1.1が有効になっている場合は、これを使用してページをオープナーウィンドウに直接読み込むことができます。ブラウザ:」

<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>

追加: ポップアップの名前を次のように参照することで、ウィンドウハンドルを別のページに戻すことができます。

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

あなたの場合、アプリケーション全体でポップアップウィンドウのすべての名前を作成するための一貫した方法を考える必要があると思います。

于 2008-10-21T11:00:02.327 に答える
1
var myWin = window.open(...);

if (myWin.closed)
{
    myWin = window.open(...);
}
于 2008-10-21T10:48:14.487 に答える
0

ポップアップ ブロッカーごとに動作が異なるため、これを確認する普遍的な方法はありません。たとえば、Opera はポップアップを表示しませんが、widow.closed は false を返します。これは、Opera がブロックされたウィンドウのシャドウ コピーを保持しているためです。

于 2008-10-21T12:58:34.817 に答える