2011-12-02 15 views
5

Rozumiem, że złą praktyką jest opóźnianie zamknięcia strony i że istnieją lepsze sposoby radzenia sobie z tego typu rzeczami, ale tylko w celu przyszłego odniesienia, czy istnieje sposób na opóźnienie zamknięcia strony? Coś takiego jakOpóźnienie strona zamknąć z JavaScript?

window.onunload = unload(); 

function unload() 
{ 
setTimeout("self.close()", 1000) 
} 

Dzięki!

+0

Czy próbowałeś? –

+2

@GlennSlaven, wypróbowałeś co? Powyższa funkcja nie działa (oczywiście: P), a ja pytałem, czy może istnieje zatwierdzona przez przeglądarkę metoda robienia tego, jak funkcja, która opóźnia ją tylko na jedną sekundę, nie więcej nie mniej, czy coś takiego – MatthewSot

Odpowiedz

8

Jeśli naprawdę potrzebujesz (czyli gotowy do uciekania się do naczep hacki.), Aby opóźnić zamykanie stronę bez pokazano okno dialogowe potwierdzenia, etc, można zrobić coś jak następuje:

function delay(ms) { 
    var start = +new Date; 
    while ((+new Date - start) < ms); 
} 

// start image loading (I assume you need this for tracking?) 
delay(150); 

Te zastrzeżenia są oczywiste: nie zawsze będzie działać i nie można opóźnić zbyt długo. Biorąc to pod uwagę, jeśli jesteś naprawdę zainteresowany tym, możesz prawdopodobnie uzyskać wyniki powyżej 95% (naprawdę zależy od czasu odpowiedzi serwera).

+2

Ale to również zablokuje stronę i przyspieszy procesor. Może to opóźnić, ale w tym okresie nic nie możesz zrobić. Sprawienie, że ten hack prawdopodobnie nie będzie tak użyteczny. –

+1

@Squeegy To nie jest aż tak źle, jak się wydaje :) W rzeczywistości nie zauważysz "blokady", jeśli zatrzymasz limit czasu około 150-250. A tak przy okazji, nie jest to coś, co wymyśliłem teraz, jest używane w produkcji przez trackery gości. – deviousdodo