Saya menjalankan skrip eksternal, menggunakan bagian <script>
dalam <head>
.
Sekarang karena skrip dieksekusi sebelum halaman dimuat, saya tidak dapat mengakses <body>
, antara lain. Saya ingin menjalankan beberapa JavaScript setelah dokumen telah "dimuat" (HTML sepenuhnya diunduh dan dalam-RAM). Apakah ada peristiwa yang dapat saya kaitkan saat skrip saya dijalankan, yang akan dipicu saat memuat halaman?
javascript
html
dom-events
pageload
Kilat
sumber
sumber
document.onload=
is non obtrusive en.wikipedia.org/wiki/Unobtrusive_JavaScriptSangat portabel, cara non-kerangka skrip Anda mengatur fungsi untuk dijalankan pada waktu buka:
sumber
Perlu diingat bahwa memuat halaman memiliki lebih dari satu tahap. Btw, ini adalah JavaScript murni
"DOMContentLoaded"
Acara ini dipecat ketika dokumen HTML awal telah dimuat dan diurai sepenuhnya , tanpa menunggu stylesheet, gambar, dan subframe selesai dimuat. Pada tahap ini Anda dapat secara optimal mengoptimalkan pemuatan gambar dan css berdasarkan perangkat pengguna atau kecepatan bandwidth.
Menjalankan setelah DOM dimuat (sebelum img dan css):
"beban"
Peristiwa yang sangat berbeda, muat , seharusnya hanya digunakan untuk mendeteksi halaman yang terisi penuh . Ini adalah kesalahan yang sangat populer untuk menggunakan load di mana DOMContentLoaded akan jauh lebih tepat, jadi berhati-hatilah.
Exectues setelah semuanya dimuat dan diuraikan:
Sumber Daya MDN:
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded https://developer.mozilla.org/en-US/docs/Web/Events/load
Daftar semua acara MDN:
https://developer.mozilla.org/en-US/docs/Web/Events
sumber
window.onload = ...
berpikir bahwa skrip saya akan menunggu sampai semuanya sepenuhnya diunduh sebelum berjalan tetapi tampaknyawindow.onload
benar-benar berperilaku seperti itudocument.addEventListener("DOMContentLoaded", ...
, sedangkan yangwindow.addEventListener("load", ...
benar - benar menunggu semuanya diunduh sepenuhnya. Saya akan berpikir bahwawindow.onload
harus setara denganwindow.addEventListener("load", ...
bukandocument.addEventListener("DOMContentLoaded", ...
?? Saya mendapat hasil yang sama di Chrome dan FF.Anda dapat menempatkan atribut "membebani" di dalam tubuh
Atau jika Anda menggunakan jQuery, Anda bisa melakukannya
Saya harap ini menjawab pertanyaan Anda.
Perhatikan bahwa $ (window) .load akan dieksekusi setelah dokumen diberikan pada halaman Anda.
sumber
Jika skrip dimuat dalam
<head>
dokumen, maka dimungkinkan menggunakandefer
atribut dalam tag skrip.Contoh:
Dari https://developer.mozilla.org :
sumber
Berikut skrip berdasarkan penangguhan js yang ditangguhkan setelah halaman dimuat,
Di mana saya menempatkan ini?
Apa fungsinya?
Berikut adalah contoh kode di atas - Tunda Rendering JS
Saya menulis ini berdasarkan penundaan pemuatan konsep javascript pagespeed google dan juga bersumber dari artikel ini Menunda pemuatan javascript
sumber
Lihatlah hooking
document.onload
atau di jQuery$(document).load(...)
.sumber
Fiddle Kerja di
<body onload="myFunction()">
sumber
http://www.feedthebot.com/pagespeed/defer-loading-javascript.html
sumber
Jika Anda menggunakan jQuery,
$(function() {...});
setara dengan
$(document).ready(function () { })
atau tangan pendek lainnya:
$().ready(function () { })
Lihat Peristiwa apa yang dijalankan JQuery $ function ()? dan https://api.jquery.com/ready/
sumber
lihat di sini: http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
sumber
Terkadang saya menemukan pada halaman yang lebih kompleks bahwa tidak semua elemen telah dimuat oleh window time.onload diaktifkan. Jika itu masalahnya, tambahkan setTimeout sebelum fungsi Anda untuk menunda sebentar. Itu tidak elegan tetapi ini adalah retasan sederhana yang menghasilkan dengan baik.
menjadi...
sumber
Cukup tentukan
<body onload="aFunction()">
yang akan dipanggil setelah halaman dimuat. Kode Anda dalam skrip tidak disertakan olehaFunction() { }
.sumber
Kode ini berfungsi dengan baik.
Tetapi
window.onload
metode memiliki berbagai dependensi. Jadi mungkin tidak berfungsi sepanjang waktu.sumber
Menggunakan perpustakaan YUI (I love it):
Portable dan cantik! Namun, jika Anda tidak menggunakan YUI untuk hal-hal lain (lihat dokumennya) saya akan mengatakan bahwa itu tidak layak untuk digunakan.
NB: untuk menggunakan kode ini Anda perlu mengimpor 2 skrip
sumber
Ada dokumentasi yang sangat bagus tentang Cara mendeteksi apakah dokumen telah dimuat menggunakan Javascript atau Jquery.
Menggunakan Javascript asli ini dapat dicapai
Ini juga dapat dilakukan di dalam interval
Misalnya oleh Mozilla
Menggunakan Jquery Untuk memeriksa hanya apakah DOM sudah siap
Untuk memeriksa apakah semua sumber daya dimuat gunakan window.load
sumber
Gunakan kode ini dengan pustaka jQuery, ini akan berfungsi dengan baik.
sumber
.ready () bekerja paling baik untuk saya.
.load () akan berfungsi, tetapi tidak akan menunggu sampai halaman dimuat.
Tidak berfungsi untuk saya, istirahat skrip in-to-in. Saya juga menggunakan jQuery 3.2.1 bersama dengan beberapa garpu jQuery lainnya.
Untuk menyembunyikan situs web saya memuat overlay, saya menggunakan yang berikut:
sumber
JavaScript
sama untuk jQuery:
CATATAN: - Jangan gunakan markup di bawah ini (karena ini menimpa deklarasi sejenis lainnya):
sumber
Seperti kata Daniel, Anda bisa menggunakan document.onload.
Berbagai kerangka kerja javascript apa pun (jQuery, Mootools, dll.) Menggunakan acara khusus 'domready', yang saya kira harus lebih efektif. Jika Anda mengembangkan dengan javascript, saya sangat merekomendasikan mengeksploitasi suatu kerangka kerja, mereka secara besar-besaran meningkatkan produktivitas Anda.
sumber
sumber
Saran saya gunakan
asnyc
atribut untuk tag skrip yang membantu Anda memuat skrip eksternal setelah pemuatan halamansumber
defer
, seperti @Daniel Price yang disebutkan?gunakan fungsi eksekusi mandiri
sumber
onload
penangan lain dengan menggunakan pendekatan ini. Sebagai gantinya, Anda harus menambahkan pendengar.