ExtJS的4.0以内时Ext.Ajax.request()[复制]所谓不一致window.open

2019-09-16 09:37发布

可能重复:
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
        }
    });
}

Answer 1:

这是时机。 如果您的请求需要更多的话〜3S浏览器会认为这是弹出窗口。 就以我的问题几个星期看看前: window.open(URL)不同的行为-同样的代码,不同的时机



Answer 2:

我怀疑这可能是一个范围的问题。 当AJAX调用从脚本的其余部分分开的“窗口”运行。

你有没有尝试过这样的:

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

function openWindows(url){
   window.open(url);
}


Answer 3:

你有没有尝试过这样的:

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


文章来源: extjs 4.0 inconsistent window.open() behavior when called within Ext.Ajax.request() [duplicate]