2016-07-22 4 views
0

Ich habe dieses seltsame Problem. Ich habe eine Anwendung und ich mache ein Fenster. Öffnen Sie von der Startseite. Ich habe den Code wie unten geschrieben:Window.open Pop-up friert den ganzen Desktop

i=1; 
while i>0 
{ 
if (!mywindow.closed) 
{ 
mywindow.focus() 
} 
else { 
1--; 
} 

} 

Dies, dass die Pop-up-Fenster immer im Fokus bleibt, um sicherzustellen, ist es sei denn, es ist geschlossen. Aber das Problem ist, wenn der Pop da ist, wird der ganze Desktop eingefroren. wir können nichts anderes tun, wenn wir es nicht schließen. Unsere Absicht war es, die Anwendung einzufrieren, aber nicht den gesamten Desktop. Wie können wir dieses Problem lösen? Danke im Voraus.

+0

Ist '1 -' tatsächlich 'ich -' in Ihrem Code? – Jacob

Antwort

1

JavaScript ist nicht multi-threaded; Wenn Sie eine while-Schleife ausführen, bindet es die gesamte Ausführung von JavaScript. Mit anderen Worten, mywindow.closed wird nie eine Chance bekommen, sich zu ändern.

Wenn Sie auf Änderungen reagieren möchten, verwenden Sie keine Polling-Schleife. Verwenden Sie stattdessen ein Ereignis:

// Not sure if this would work, but illustrates using events. 
mywindow.addEventListener('blur', function() { 
    mywindow.focus(); 
}); 
+0

Hallo, Danke für die Antwort. Mein Problem ist nicht mit der Anwendung, sondern friert den gesamten Desktop ein, wie ich meine E-Mails nicht überprüfen oder ein Dokument oder etwas anderes öffnen kann, es sei denn, dass das Pop-up geschlossen ist. ist das erwartet? – Tiya

+0

Diese kleine Schleife wird so viel CPU wie möglich aufnehmen; Ob dein Desktop friert, hängt davon ab, wie viel überschüssige CPU übrig ist, also macht es Sinn, dass es passiert. – Jacob

+0

Das erklärt es. Vielen Dank. :) – Tiya