24

HTMLページがあります。ページの本文では、onloadjavascript関数を呼び出してポップアップウィンドウを開くイベントを呼び出しています。コードは次のとおりです。

var newWindow = null;
function launchApplication()
{
    if ((newWindow == null) || (newWindow.closed))
    {
        newWindow = window.open('abc.html','','height=960px,width=940px');
    }
}

別のページに移動して再びそのページに戻ると、ポップアップは既に開いていますが、再び開きます。ポップアップがすでに開いている場合に再び開かないように、正しい方向に案内してください。試しdocument.referredましたが、サイトがオンラインである必要があります。現在、オフラインで作業しています。

4

5 に答える 5

20
newWindow = window.open('abc.html','com_MyDomain_myWindowForThisPurpose','height=960px,width=940px');

ウィンドウに名前を付けます。このようにドメインに基づいて名前を付けることで、他の誰かがたまたま選んだ名前を選ぶ可能性を防ぐことができます。

で始まる名前は絶対に作成しないでください_。これらの名前は、ブラウザが異なる方法で処理する特別な名前用に予約されています(アンカー要素の「target」属性と同じ)。

その名前のウィンドウが異なるオプション(たとえば、異なる高さ)で開かれた場合、それらのオプションが保持されることに注意してください。ここでのオプションは、その名前のウィンドウがない場合にのみ有効になるため、新しいウィンドウを作成します。

編集:

「名前」はウィンドウのものであり、コンテンツのものではないことに注意してください。タイトルには影響しません(newWindow.document.titleもちろんコードインするので、タイトルに影響しますabc.html)。これは、ウィンドウ間で何かを行う他の試みに影響します。したがってwindow.open、同じ名前の別のウィンドウがこのウィンドウを再利用します。また、のようなリンク<a href="def.html" target="com_MyDomain_myWindowForThisPurpose">clicky!</a>はそれを再利用します。さまざまなシナリオ(ポップアップブロック)でウィンドウを開くことに抵抗するブラウザに関する通常の警告が適用されます。

于 2012-08-27T08:08:10.573 に答える
12

ウィンドウを開き、ページを更新するまでの間、ウィンドウへの参照を保持します。

var winref = window.open('', 'MyWindowName', '', true);
if(winref.location.href === 'about:blank'){
    winref.location.href = 'http://example.com';
}

または関数形式で

function openOnce(url, target){
    // open a blank "target" window
    // or get the reference to the existing "target" window
    var winref = window.open('', target, '', true);

    // if the "target" window was just opened, change its url
    if(winref.location.href === 'about:blank'){
        winref.location.href = url;
    }
    return winref;
}
openOnce('http://example.com', 'MyWindowName');
于 2015-12-23T13:52:03.930 に答える
7

ウィンドウを閉じるときにウィンドウへの参照を再割り当てすることで、ウィンドウが開いているか閉じているかを確認できます。例:

var newWindow;
var openWindow = function(){
    newWindow = newWindow || window.open('newpage.html');
    newWindow.focus();
    newWindow.onbeforeunload = function(){
        newWindow = null;
    };
};
于 2016-10-12T08:43:52.370 に答える
1

「closed」プロパティを使用します。ウィンドウが閉じられている場合、closed プロパティは true になります。 https://developer.mozilla.org/en-US/docs/Web/API/Window/closed

于 2020-08-04T08:42:34.490 に答える