2012-04-06 1 views
0

Mögliche Duplizieren:
window.open(url) different behavior - same code, different timingextjs 4.0 inkonsistent window.open() Verhalten, wenn sie innerhalb Ext.Ajax.request genannt()

Ich werde meinen Code-Schnipsel erklären das Problem lassen Ich sehe.

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

Das ist sehr seltsam. Ich verstehe, dass es derzeit keine Möglichkeit gibt, eine Browser-Registerkarte anstelle eines Browser-Fensters zu öffnen, um dieses Problem zu untersuchen. Davon abgesehen frage ich mich immer noch, ob es einen Workaround gibt. Die Art, wie meine App entworfen ist, jedes Mal, wenn ich window.open() anrufe, ist ein Tab geöffnet, außer für diesen einen Fall, und deshalb finden es meine Kunden sehr ärgerlich. Jede Einsicht würde sehr geschätzt werden.

Neben Justin Vorschlag unten Ich habe auch versucht die folgenden:

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

Antwort

0

Ich vermute, dass es sich um ein Umfang Problem sein könnte. Wo der AJAX-Aufruf in einem separaten "Fenster" vom Rest des Skripts ausgeführt wird.

Haben Sie so etwas wie versucht:

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

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

Vielen Dank für Ihre Antwort. Ja, ich habe es versucht und trotzdem würde es ein neues Fenster öffnen. – PFrank

1

Dies ist das Timing. Wenn Ihre Anfrage mehr als 3 Sekunden dauert, wird der Browser denken, dass es ein Popup-Fenster ist. Werfen Sie einen Blick auf meine Frage vor einigen Wochen: window.open(url) different behavior - same code, different timing

+0

Danke für Ihre Antwort. Mein PHP-Aufruf dauert <1 Sek. Nur um sicher zu sein, ersetzte ich den ursprünglichen PHP-Code durch eine superleichte Zeile, und ich sah immer noch das gleiche inkonsistente Verhalten. – PFrank

+0

Versuchen Sie, Alarm ('etwas') hinzuzufügen, direkt bevor Sie win.open() – sha

0

Sie versucht, wie etwas haben:

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