在Chrome和IE中弹出阻止程序

时间:2015-11-23 08:26:22

标签: javascript google-chrome internet-explorer window.open popup-blocker

以下是我用来在新窗口中打开链接的一段代码" 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中都会发生

1 个答案:

答案 0 :(得分:0)

可能是因为您使用空白网址调用window.open或在这种情况下反复调用。{/ p>

您不需要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