3

单击链接时,我有以下使用 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().

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

谢谢

4

2 回答 2

1

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

在这里检查这个答案。Window.open 被阻止您需要为您的窗口提供正确的上下文。

于 2013-02-13T17:25:01.357 回答
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();
    };
}());

例子

于 2013-02-11T23:05:00.023 回答