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() を呼び出すたびに、この 1 つのケースを除いてタブが開かれるため、クライアントは非常に煩わしく感じます。どんな洞察も大歓迎です。

以下のジャスティンの提案に加えて、次のことも試しました。

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

これはタイミングです。リクエストに 3 秒以上かかる場合、ブラウザはそれをポップアップ ウィンドウと見なします。数週間前の私の質問を見てください: window.open(url) 異なる動作 - 同じコード、異なるタイミング

于 2012-04-06T21:37:04.510 に答える
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 に答える
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 に答える