IE 9不使用window.open刷新窗口,而是打开新窗口

IE 9 does not refresh windows with window.open, instead opens new window

本文关键字:窗口 新窗口 window open IE 刷新      更新时间:2023-09-26

我有以下一行代码,当单击链接时使用jQuery调用:

  alipayTransactionModalTrigger.click(function(e) {  
     e.preventDefault();             
     $.ajax({
        url: "doSomething",
        data: "p_locale=en-US",
        success: function(dataOut){
           if (dataOut == "hold") {
              ...do something...
           } else {   
              //open a modal over parent window
              alipayTransactionModal.dialog("open"); 
              //also open new tab/window
              var Payment = window.open("http://www.alipay.com", "Payment");                  
              Payment;                
              Payment.focus();
           }
        }
     });    
     return false;
  });

ajax调用基本上只是检查一些值。成功的召唤正在像它应该发生的那样发生,这不是问题所在。通过使用框架名称,我试图在多次单击链接时强制刷新新打开的窗口/选项卡。这在IE 8、Chrome和Firefox中都有效——用户可以多次点击链接,并且只会打开一个新窗口——随后的点击只会重新加载该窗口。

然而,IE 9不会发生这种情况——IE 9每次都会打开一个新的窗口/选项卡。有没有办法在IE 9中强制执行这种行为?或者,即使只是解释一下为什么IE 9中会出现这种情况也很好——这是用户级别的设置吗?据我所知,当我在window.open()中使用帧名时,IE9只是不知道我指向的是什么。

我应该提到的另一件事是,.focus()并不总是将窗口集中在第二次/第三次等点击上(似乎取决于浏览器和浏览器设置),但我已经在这里问过这个问题了,只是在这里包括它,以防它相关。

感谢

使用window.open从ajax回调打开窗口注定会被弹出窗口阻止程序阻止。我相信如果你禁用它,它会按预期工作。

请在此处查看此答案。Window.open被阻止您需要正确的窗口上下文。

我没有用于测试的IE9,但这可能有助于

var openLink = (function() {
    var _popups = {};
    return function(link, name) {
        if (_popups.hasOwnProperty(name) === false) {
            _popups[name] = window.open();
        }
        _popups[name].location.href = link;
        _popups[name].focus();
    };
}());

示例