0

可能重复:
window.open(url) 不同的行为 - 相同的代码,不同的时间

我会让我的代码片段解释我看到的问题。

function myFunction() {
    window.open('http://www.yahoo.com');  // --> this opens a new tab on my browser
    Ext.Ajax.request({
        url: 'PHP function call',
        success: function(response) {
            window.open('http://www.yahoo.com');  // --> this opens a new window, not tab
        }
    });
}

这很奇怪。通过研究这个问题,我了解到目前没有办法强制打开浏览器选项卡而不是浏览器窗口。话虽如此,我仍然想知道是否有任何解决方法。我的应用程序的设计方式是,每次我调用 window.open() 时都会打开一个选项卡,但这种情况除外,因此我的客户觉得这很烦人。任何见解将不胜感激。

除了下面贾斯汀的建议外,我还尝试了以下方法:

function myFunction() {
    var myWin = window;
    myWin.open('http://www.yahoo.com');  // --> this opens a new tab on my browser
    Ext.Ajax.request({
        url: 'PHP function call',
        success: function(response) {
            myWin.open('http://www.yahoo.com');  // --> this opens a new window, not tab
        }
    });
}
4

3 回答 3

1

这是时机。如果您的请求需要更多时间,则 ~3s 浏览器会认为它是弹出窗口。看看我几周前的问题:window.open(url) 不同的行为 - 相同的代码,不同的时间

于 2012-04-06T21:37:04.510 回答
0

您是否尝试过类似的方法:

function myFunction() {
    window.open('http://www.yahoo.com');  // --> this opens a new tab on my browser
    Ext.Ajax.request({
        url: 'PHP function call',
        success: function(response) {
            this.apply(openWindow);
        }
    });
}

function openWindow()
{
     window.open('http://www.yahoo.com');
}
于 2012-04-07T15:27:37.263 回答
0

我怀疑这可能是范围问题。AJAX 调用与脚本的其余部分在单独的“窗口”中运行。

您是否尝试过类似的方法:

function myFunction() {
    Ext.Ajax.request({
        url: 'PHP function call',
        success: function(response) {
            openWindows('http://www.yahoo.com');
        }
    });
}

function openWindows(url){
   window.open(url);
}
于 2012-04-06T21:18:09.340 回答