2011-12-02 14 views
5

Ahora, entiendo que es una mala práctica retrasar el cierre de una página, y que hay mejores formas de manejar ese tipo de cosas, pero solo para referencia futura, ¿hay alguna manera de retrasar el cierre de la página? Algo así como¿La página de retraso se cierra con Javascript?

window.onunload = unload(); 

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

Gracias!

+0

¿Lo has probado? –

+2

@GlennSlaven, ¿qué intentó? La función anterior no funciona (por supuesto, P), y estaba preguntando si tal vez había una forma de hacerlo aprobada por el navegador, como una función que la demoraría solo un segundo, ni más ni menos, o algo así. – MatthewSot

Respuesta

8

Si realmente necesita (es decir, dispuestos a recurrir a la semi-hacks.) Para retrasar el cierre página sin mostrar un cuadro de diálogo de confirmación, etc, se puede hacer algo como lo siguiente:

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

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

Las advertencias son obvio: no siempre funcionará y no se puede demorar demasiado tiempo. Dicho esto, si realmente está interesado en esto, probablemente obtendrá resultados de más del 95% (realmente depende del tiempo de respuesta del servidor).

+2

Pero eso también bloqueará la página y aumentará tu CPU. Puede retrasarlo, pero no puede hacer nada en absoluto durante ese período. Hacer este truco probablemente no sea tan útil. –

+1

@Squeegy No es tan malo como parece :) En realidad, no notarás el "bloqueo" si mantienes el tiempo de espera entre 150 y 250. Y, por cierto, esto no es algo que haya inventado ahora, está siendo utilizado en la producción por los rastreadores de visitantes. – deviousdodo

Cuestiones relacionadas