在Ext.Ajax.request()中调用extjs 4.0不一致的window.open()行为

时间:2012-04-06 20:58:44

标签: javascript extjs4 window.open

  

可能重复:
  window.open(url) different behavior - same code, different timing

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

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
        }
    });
}

3 个答案:

答案 0 :(得分:1)

这是时机。如果您的请求需要更多,那么~3s浏览器会认为它是弹出窗口。几周前看看我的问题:window.open(url) different behavior - same code, different timing

答案 1 :(得分: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);
}

答案 2 :(得分: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');
}