0

以下は、「abc」などの新しいウィンドウでリンクを開くために使用しているコードです。

ユーザーが同じリンクを再度クリックすると、同じウィンドウ「abc」でリンクを閉じて再度開く必要があります。

window.openOrFocus = function(url, "abc") {
if (!window.popups) {
    window.popups = {};}
if (window.popups["abc"]){
   var v=window.open("", "abc");
    v.close();}
window.popups["abc"] = window.open(url, "abc");
}

しかし、リンクをクリックすると、「abc」という名前の新しいウィンドウで URL が開きます。次に、ウィンドウ「abc」を閉じます。戻って、もう一度リンクをクリックします。

その時、ポップアップ ブロッカーが表示されます。

手動でウィンドウを閉じて、リンクをクリックして再度開いてみると、このポップアップ ブロッカーが表示される理由がわかりません。

IEとChromeの両方で発生します

4

1 に答える 1

0

おそらくwindow.open、空白の URL で呼び出しているか、その場合は繰り返し呼び出しているためです。

window.open("", "abc")電話は必要ありません。代わりに、すでに持っているウィンドウ参照を使用してください。

window.openOrFocus = function(url, windowName) {
    if (!window.popups) {
        window.popups = {};
    }
    if (window.popups[windowName]){
       window.popups[windowName].close();
    }
    window.popups[windowName] = window.open(url, windowName);
};

unload参照を削除できるように、イベントもリッスンします。

window.openOrFocus = function(url, windowName) {
    if (!window.popups) {
        window.popups = {};
    }
    if (window.popups[windowName]){
       window.popups[windowName].close();
    }
    window.popups[windowName] = window.open(url, windowName);
    window.popups[windowName].onunload = function() {
        delete window.popups[windowName];
    };
};

補足: これは構文エラーです。

window.openOrFocus = function(url, "abc") {
// --------------------------------^

windowName上記のコードでそれを置き換えました。

于 2015-11-23T08:37:02.867 に答える