5

だから私がこれをするとします

var myWindow = false;
$('someelement').click(function(){
  var myWindow = window.open('url', 'name', 'width=100,height=200');
});

したがって、ユーザーがウィンドウAの要素をクリックすると、新しいウィンドウ(ウィンドウBと呼びます)が開きます。

しかし、ウィンドウAがリロードされたと仮定します...これにより、var myWindowはfalseに設定されます...しかし、ウィンドウBはまだ開いています...ウィンドウAの後にウィンドウAからウィンドウBの存在を検出するにはどうすればよいですか?リロードされます

私はあなたがこれを行うことができることを知っています:

var hasWindow = window.open('', 'name');

ウィンドウBがすでに開いている場合は、ウィンドウBへの参照を返します。

ただし、ウィンドウBがまだ開かれていない場合は、代わりにウィンドウが開きます。これは望ましくありません。

ウィンドウBが開いていない場合に、新しいウィンドウを開くことをトリガーせずにウィンドウBが開いている場合、どうすればウィンドウBへの参照を取得できますか?(クッキーのトリックに頼ることなく)

4

1 に答える 1

1

Cookieに保存せずに少しの状態を維持する最良の方法は、window.nameに何かを保存することです。ただし、文字列でのみ機能するため、1ビット以上のデータが必要な場合は、JSON文字列として保存する必要があります。

読むには:

var keptState;
if (window.name !== "") {
    keptState = JSON.parse(window.name);
}

書くには:

state = {
    "popupOpened" : true,
    "popupName" : "otherWindowName"
};
window.name = JSON.stringify(state);

更新の反対側(またはサイトから離れて戻ったりすることさえ)では、それはあなたが望むあなたの変数を保持します。ただし、実際に他のウィンドウへの参照が必要な場合は、それを自分で行う必要があります。それが実際にそこにあると判断する方法は考えられません。たとえば、誰かが自分でポップアップウィンドウを閉じた場合、これは問題になります。

少なくともこの方法で、開いたかどうかを確認できます。次に、ポップアップなしでそのウィンドウが本当に必要な場合は、ポップアンダーを実行できます。私がそれをするとき、これはいつも少し怪しげな感じがします、しかしそれはおそらくあなたが求めていることをするための最良の方法です。

var myWindow = window.open('', 'otherWindowName');
myWindow.blur();
window.focus();
于 2012-09-05T01:34:32.080 に答える