extjs 4.0 inconsistent window.open() behavior when called within Ext.Ajax.request() [duplicate]

核能气质少年 提交于 2019-12-08 10:08:48

问题


Possible Duplicate:
window.open(url) different behavior - same code, different timing

I'll let my code snippet explain the issue I'm seeing.

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

This is very strange. From researching this issue, I understand there currently exists no way to force a browser tab to open instead of a browser window. That being said, I'm still wondering if there's any workaround. The way my app is designed, every time I call window.open() a tab is opened except for this one case and therefore my clients find it very annoying. Any insight would be greatly appreciated.

In addition to Justin's suggestion below I also tried the following:

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

回答1:


This is timing. If your request takes more then ~3s browser will think it's popup window. Take a look on my question couple weeks ago: window.open(url) different behavior - same code, different timing




回答2:


I suspect that it might be a scope issue. Where the AJAX call is running in a separate 'window' from the rest of the scripting.

Have you tried something like:

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

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



回答3:


Have you tried something like:

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


来源:https://stackoverflow.com/questions/10049172/extjs-4-0-inconsistent-window-open-behavior-when-called-within-ext-ajax-reques

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!