Ich führe ein externes Skript mit einem <script>
Inside aus <head>
.
Da das Skript jetzt ausgeführt wird, bevor die Seite geladen wurde, kann ich <body>
unter anderem nicht auf das zugreifen . Ich möchte etwas JavaScript ausführen, nachdem das Dokument "geladen" wurde (HTML vollständig heruntergeladen und im RAM). Gibt es Ereignisse, an die ich mich bei der Ausführung meines Skripts anschließen kann und die beim Laden der Seite ausgelöst werden?
javascript
html
dom-events
pageload
Der Blitz
quelle
quelle
document.onload=
ist nicht aufdringlich en.wikipedia.org/wiki/Unobtrusive_JavaScriptEinigermaßen portable Methode ohne Framework, mit der Ihr Skript eine Funktion zum Ausführen beim Laden festlegen kann:
quelle
Beachten Sie, dass das Laden der Seite mehr als eine Phase umfasst. Übrigens ist dies reines JavaScript
"DOMContentLoaded"
Dieses Ereignis wird ausgelöst, wenn das ursprüngliche HTML-Dokument vollständig geladen und analysiert wurde , ohne darauf zu warten, dass Stylesheets, Bilder und Unterrahmen vollständig geladen sind . Zu diesem Zeitpunkt können Sie das Laden von Bildern und CSS programmgesteuert basierend auf dem Benutzergerät oder der Bandbreitengeschwindigkeit optimieren.
Wird ausgeführt, nachdem DOM geladen wurde (vor img und css):
"Belastung"
Ein ganz anderes Ereignis, Laden , sollte nur zum Erkennen einer vollständig geladenen Seite verwendet werden . Es ist ein unglaublich beliebter Fehler, load zu verwenden, wenn DOMContentLoaded viel angemessener wäre. Seien Sie also vorsichtig.
Exectues nachdem alles geladen und analysiert wurde:
MDN-Ressourcen:
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded https://developer.mozilla.org/en-US/docs/Web/Events/load
MDN-Liste aller Ereignisse:
https://developer.mozilla.org/en-US/docs/Web/Events
quelle
window.onload = ...
denken, dass mein Skript warten würde, bis alles vollständig heruntergeladen wurde, bevor es ausgeführt wird, aber es scheint sichwindow.onload
tatsächlich so zu verhaltendocument.addEventListener("DOMContentLoaded", ...
, während daswindow.addEventListener("load", ...
wirklich darauf wartet, dass alles vollständig heruntergeladen wird. Ich hätte gedacht, dasswindow.onload
das eher gleichbedeutend sein solltewindow.addEventListener("load", ...
alsdocument.addEventListener("DOMContentLoaded", ...
?? Ich habe das gleiche Ergebnis in Chrome und FF erhalten.Sie können ein "onload" -Attribut in den Body einfügen
Oder wenn Sie jQuery verwenden, können Sie dies tun
Ich hoffe es beantwortet deine Frage.
Beachten Sie, dass das Laden von $ (Fenster) ausgeführt wird, nachdem das Dokument auf Ihrer Seite gerendert wurde.
quelle
Wenn die Skripte in das
<head>
Dokument geladen werden , kann dasdefer
Attribut im Skript-Tag verwendet werden.Beispiel:
Von https://developer.mozilla.org :
quelle
Hier ist ein Skript, das auf dem verzögerten Laden von js basiert, nachdem die Seite geladen wurde.
Wo platziere ich das?
Was tut es?
Hier ist ein Beispiel für den obigen Code - Rendering von JS verzögern
Ich schrieb diese basierend auf defered Laden von Javascript Page Speed google Konzept und auch aus diesem Artikel sourced Aufschieben Laden Sie Javascript
quelle
Schauen Sie sich Hooking
document.onload
oder in jQuery an$(document).load(...)
.quelle
Arbeits Fiddle auf
<body onload="myFunction()">
quelle
http://www.feedthebot.com/pagespeed/defer-loading-javascript.html
quelle
Wenn Sie jQuery verwenden,
$(function() {...});
ist äquivalent zu
$(document).ready(function () { })
oder eine andere kurze Hand:
$().ready(function () { })
Siehe Welches Ereignis wird bei JQuery $ function () ausgelöst? und https://api.jquery.com/ready/
quelle
Schauen Sie hier: http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
quelle
Ich finde manchmal auf komplexeren Seiten, dass nicht alle Elemente vom Zeitfenster geladen wurden. Onload wird ausgelöst. Wenn dies der Fall ist, fügen Sie setTimeout hinzu, bevor Ihre zu verzögernde Funktion einen Moment dauert. Es ist nicht elegant, aber es ist ein einfacher Hack, der gut rendert.
wird...
quelle
Definieren Sie einfach,
<body onload="aFunction()">
dass aufgerufen wird, nachdem die Seite geladen wurde. Ihr Code im Skript wird dann von eingeschlossenaFunction() { }
.quelle
Dieser Code funktioniert gut.
Die
window.onload
Methode hat jedoch verschiedene Abhängigkeiten. Es funktioniert also möglicherweise nicht immer.quelle
Verwenden der YUI-Bibliothek (ich liebe es):
Tragbar und schön! Wenn Sie YUI jedoch nicht für andere Zwecke verwenden (siehe Dokument), würde ich sagen, dass es sich nicht lohnt, es zu verwenden.
NB: Um diesen Code zu verwenden, müssen Sie 2 Skripte importieren
quelle
Es gibt eine sehr gute Dokumentation zum Erkennen, ob ein Dokument mit Javascript oder Jquery geladen wurde .
Mit dem nativen Javascript kann dies erreicht werden
Dies kann auch innerhalb des Intervalls erfolgen
ZB von Mozilla
Verwenden von Jquery Nur um zu überprüfen, ob DOM bereit ist
Um zu überprüfen, ob alle Ressourcen geladen sind, verwenden Sie window.load
quelle
Verwenden Sie diesen Code mit der jQuery-Bibliothek, dies würde einwandfrei funktionieren.
quelle
.ready () funktioniert am besten für mich.
.load () wird funktionieren, aber es wird nicht warten, bis die Seite geladen ist.
Funktioniert bei mir nicht, bricht das nächste Inline-Skript. Ich verwende auch jQuery 3.2.1 zusammen mit einigen anderen jQuery-Gabeln.
Um das Laden von Overlays auf meinen Websites auszublenden, verwende ich Folgendes:
quelle
JavaScript
Gleiches gilt für jQuery:
HINWEIS: - Verwenden Sie das folgende Markup nicht (da es andere gleichartige Deklarationen überschreibt):
quelle
Wie Daniel sagt, könnten Sie document.onload verwenden.
Die verschiedenen Javascript-Frameworks (jQuery, Mootools usw.) verwenden jedoch ein benutzerdefiniertes Ereignis "domready", das meiner Meinung nach effektiver sein muss. Wenn Sie mit Javascript entwickeln, würde ich dringend empfehlen, ein Framework zu nutzen, das Ihre Produktivität massiv steigert.
quelle
quelle
Mein Rat verwendet ein
asnyc
Attribut für ein Skript-Tag, mit dem Sie die externen Skripte nach dem Laden der Seite laden könnenquelle
defer
meintest du stattdessen, wie @Daniel Price erwähnt?Verwenden Sie die Selbstausführungs-Onload-Funktion
quelle
onload
Mit diesem Ansatz können Sie andere Handler überschreiben . Stattdessen sollten Sie einen Listener hinzufügen.