2012-09-05 24 views
6

Auf meinem Handy, in Safari Wenn ich auf meine Standardseite gehe, die alert("Hello") auf dem Body-Onload-Ereignis hat, wird die Warnung mit meiner Standardseite im Hintergrund vollständig sichtbar angezeigt. Wenn ich dann zu einer anderen Website zum Beispiel bbc.co.uk gehe und dann meine Webadresse für meine Standardseite in die Adressleiste eintippe, wird die Warnung mit dem BBC-Inhalt im Hintergrund angezeigt, ähnlich wie die Warnmeldung vor der Seite geladen wird hat geladen.JavaScript-Warnung lädt, bevor die Seite angezeigt wird

Wie zeige ich nur die Nachricht, wenn die ganze Seite sichtbar ist. Ich habe gelesen, dass window.onload wartet, bis alles geladen ist, bevor es die Warnung auslöst, aber ich muss etwas falsch bekommen, weil sich das Verhalten nicht ändert. Ich habe auch versucht:

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

und

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

, falls es etwas mit dem Cache zu tun hat, aber ich glaube nicht, das ist die Frage. Irgendwelche Ideen ?

Dank

+0

[Unterschied zwischen $ (document) .ready und $ (Fenster) .load in jQuery] (http://web.enavu.com/ Daily-Tip/Daily-Tip-Unterschied zwischen Document-Ready und Window-Load-in-Jquery /) – smilledge

Antwort

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

Die Warnung wird immer noch angezeigt, bevor die Seite sichtbar ist. Die verweisende Seite ist immer noch im Hintergrund sichtbar. – mjroodt

+0

Ich musste die setTimeout-Funktion sowie die jquery window.load verwenden. Ich habe keine Ahnung, warum es nicht funktioniert hat, aber das hat für mich funktioniert. $ (window) .ready (function() { setTimeout (function() {Alarm ("Test")}, 1000); }); – mjroodt

+0

@mjroodt Warum haben Sie diese Antwort dann akzeptiert? – showdev

3

wenn Sie Wanto die Box entweder Verwendung alrert anzuzeigen window.onload gibt es im Einsatz keinen Sinn, beide, hier ist Code, der feinen

window.onload arbeiten (die auch umgesetzt wird in alten Browsern), feuert die, wenn sie die gesamte Seite geladen

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

jQuery document.ready bietet, die jene abstrahiert und Feuer als sobald die DOM Seite bereit ist

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

prüfen Antwort: window.onload vs $(document).ready()

window.onload ist die integrierte JavaScript-Ereignis, sondern als dessen Umsetzung subtile Macken in allen Browsern hatte (FF/IE6/IE8/Opera), jQuery stellt document.ready zur Verfügung, das diese abstrahiert und abfeuert, sobald das DOM der Seite bereit ist (nicht auf Bilder usw. warten).

document.ready ist eine Funktion jQuery, Verpackung und Konsistenz auf die folgenden Ereignisse bereitstellt:

  • document.ondomcontentready/document.ondomcontentloaded - ein neueres Ereignis, das ausgelöst wird, wenn das DOM-Dokument geladen wird (die einige Zeit sein kann vor die Bilder usw. sind geladen); wieder, etwas anders in IE und in Rest der Welt
  • und window.onload (die auch in alten Browsern implementiert ist), die ausgelöst wird, wenn die gesamte Seite geladen wird (Bilder, Designs, usw.)
+0

Sicherlich, auch wenn beide zusammen nicht notwendig sind beide sollten nicht dazu führen, dass es zu früh laufen sollte ? – Chris

+0

Das 'ready'-Ereignis tritt auf, nachdem das HTML-Dokument geladen wurde, nicht wenn die gesamte Seite gerendert wurde ... Siehe http://stackoverflow.com/questions/3698200/window-onload-vs-document-ready – smilledge

+0

Ah , ein anderes Plakat hat die Antwort. Ihre Antwort wird nicht funktionieren, weil der von Ihnen zitierte Code 'alert (' Test ')' auswertet, bevor er onload zugewiesen wird. Sie müssen eine Funktion an onload übergeben. – Chris

7

Sie übergeben einen Verweis auf eine Funktion an die window.onload und nicht den tatsächlichen Aufruf.

versuchen

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

+1 für die tatsächliche Erklärung, warum der Code des Benutzers nicht funktionierte, anstatt nur anderen Code bereitzustellen. Die Tatsache, dass es die Warnung auswertet, bevor es dem Ereignis zugewiesen wird, ist ein subtil aussehender Bug, der schwer zu erkennen ist, wenn man nicht gezielt danach sucht (da der menschliche Beobachter weiß, was es bedeutet und nicht darüber nachdenkt, was es bedeutet) sagt eigentlich). – Chris

+0

Ich habe dies versucht und die Warnung kommt immer noch mit der verweisenden Seite im Hintergrund. – mjroodt

-1

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

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

 
</body> 
 
</html>

Verwandte Themen