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

时间:2013-02-11 22:32:54

标签: javascript jquery internet-explorer-9 window.open

我点击链接时使用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()并不总是把窗口集中在第二/第三/等咔嗒声上(似乎取决于浏览器和浏览器设置) - 但我已经问过这个问题{{3}如果它是相关的,只需将它包括在内。

由于

2 个答案:

答案 0 :(得分:1)

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

点击此处查看此答案。 Window.open blocked您的窗口需要正确的上下文。

答案 1 :(得分:0)

我没有用于测试的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();
    };
}());

Example