2017-01-04 7 views
0

Ich frage mich, was passiert mit den Funktionen setTimeout, setInterval und anderen Funktionen, die beim Laden des DOMs ausgelöst werden, wenn ich die Webseite in einem anderen Tab oder Fenster öffne. Werden sie ausgelöst, sobald ich die Webseite tatsächlich gesehen habe, oder werden sie ausgelöst, sobald das DOM geladen ist, sogar im Hintergrund? Ist das bei verschiedenen Browsern anders?Webseite in neuem Tab und Timeouts öffnen

+2

sie werden nur einmal ausgelöst .. die Seite geladen wird .. Auf Rekonstruktion von Dom .. sie werden nicht ausgelöst werden. –

Antwort

1

Zumindest in Chrome und Opera ist der Callback ausgeführt, auch wenn die Seite im Hintergrund geladen wird.

Betrachten Sie das folgende HTML

<a href="javascript:openWindow()">Click me!</a> 

und die entsprechenden JavaScript

function openWindow() 
{ 
    var article = open(''); 
    focus(); 

    article.setTimeout(function(){ article.alert("Hello"); }, 3000); 
} 

(Siehe this fiddle).

Wenn Sie bei gedrückter Strg-Taste auf den Link klicken, öffnet Chrome eine neue Hintergrundregisterkarte. Immer noch wird die alert nach 3 Sekunden angezeigt. Das gleiche Beaviour kann in Opera beobachtet werden. Ich habe auch Edge versucht, aber es wird nicht die Seite in einem Hintergrund-Tab öffnen, daher kann ich nicht sagen, ob das JS noch ausgeführt würde.

+0

In Ordnung. Weißt du, was passiert, wenn ich zum Beispiel den Tab in iPhone Chrome öffne und die App verliere? Laufen die Funktionen noch im Hintergrund? – uksz

+0

Probieren Sie es einfach mit der Geige aus. Ich habe es gerade mit Chrome @ Android versucht und die Warnung wurde überhaupt nicht angezeigt, als ich die Registerkarte im Hintergrund öffnete. –

+0

@uksz und vergessen Sie nicht, meine Antwort als die richtige zu markieren;) –

Verwandte Themen