2012-09-05 41 views
6

En mi móvil, en safari Si voy a mi página predeterminada que tiene alert("Hello") en el evento de carga corporal, la alerta se muestra con mi página predeterminada totalmente visible en segundo plano. Si luego voy a otro sitio, por ejemplo, bbc.co.uk y luego escribo mi dirección web para mi página predeterminada en la barra de direcciones, la alerta se muestra con el contenido de la BBC en segundo plano, es como la alerta se carga antes de la página ha cargadoAlerta de Javascript carga antes de que la página muestre

¿Cómo solo muestro el mensaje una vez que está visible toda la página? He leído que window.onload espera hasta que todo esté cargado antes de que active la alerta, pero debo obtener algo incorrecto porque el comportamiento no cambia. También he intentado:

$(document).ready(function() { 
    window.onload= alert('Test'); 
}); 

y

<meta http-equiv="Pragma" content="no-cache"/> 

en caso de que tenga algo que ver con la memoria caché, pero no creo que esta es la cuestión. Algunas ideas ?

Gracias

+0

[Diferencia entre $ (document) .load $ (ventana) en jQuery ready y] (http://web.enavu.com/ daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery /) – smilledge

Respuesta

2
$(window).load(function() { 
     alert('Test'); 
}); 
+0

La alerta aún aparece antes de que la página sea visible. La página de referencia aún está visible en el fondo. – mjroodt

+0

Tuve que usar la función setTimeout y jquery window.load. No tengo idea de por qué no funcionó, pero esto funcionó para mí. $ (window) .ready (function() { setTimeout (function() {alert ("Test")}, 1000); }); – mjroodt

+0

@mjroodt Entonces, ¿por qué aceptaste esta respuesta? – showdev

3

si Wanto muestra el cuadro ya sea para uso alrert window.onload no hay ningún punto en el uso tanto, aquí está el código que funciona bien

window.onload (que se implementa incluso en los navegadores antiguos), que se activa cuando la totalidad de las cargas de la página

window.onload = function(){ alert('test'); } 

jQuery proporciona document.ready, que abstrae los de distancia, y los incendios como pronto como esté listo DOM de la página

$(document).ready(function() {  
alert('Test'); 
}); 

Comprobar respuesta de: window.onload vs $(document).ready()

window.onload es la incorporada en el caso de Javascript, pero a medida que su aplicación había sutiles peculiaridades en todos los navegadores (FF/IE6/IE8/Opera), jQuery proporciona document.ready, que los abstrae, y se dispara tan pronto como el DOM de la página esté listo (no espera las imágenes, etc.).

document.ready es una función jQuery, envolviendo y proporcionando consistencia a los siguientes eventos:

  • document.ondomcontentready/document.ondomcontentloaded - un evento newish que dispara cuando se carga DOM del documento (que puede ser algún tiempo antes se cargan las imágenes, etc.); de nuevo, un poco diferente en IE y en el resto del mundo
  • y window.onload (que se implementa incluso en los navegadores antiguos), que se activa cuando la totalidad de las cargas de la página (imágenes, estilos, etc.)
+0

Seguramente, incluso si ambos juntos son innecesarios al usar ambos, no deberían hacer que se ejecute demasiado pronto si ? – Chris

+0

El evento 'listo' se produce después de que se haya cargado el documento HTML, no cuando se ha procesado toda la página ... Consulte http://stackoverflow.com/questions/3698200/window-onload-vs-document-ready – smilledge

+0

Ah , otro cartel tiene la respuesta. su respuesta no funcionará porque el código que ha citado evaluará 'alerta ('Prueba')' antes de asignarlo a la carga. Necesita pasar una función para cargar. – Chris

7

Pasa una referencia a una función al window.onload y no a la llamada real.

tratar

window.onload = function(){ 
alert('test'); 
} 
+0

+1 para explicar realmente por qué el código del usuario no funcionó en lugar de simplemente proporcionar otro código. El hecho de que evaluaría la alerta antes de asignarla al evento es un error de aspecto sutil que es bastante difícil de detectar si no se busca específicamente (ya que el observador humano sabe lo que significa y no piensa en qué en realidad dice). – Chris

+0

He intentado esto y la alerta sigue apareciendo con la página de referencia en segundo plano. – mjroodt

-1

<!DOCTYPE html> 
 
<html> 
 
<body onload="show_popup()"> 
 

 
<script> 
 
function show_popup() { 
 
    alert("Popup shows"); 
 
} 
 
</script> 
 

 
</body> 
 
</html>

Cuestiones relacionadas