Saya perlu menjalankan beberapa kode JavaScript saat halaman telah dimuat penuh. Ini termasuk hal-hal seperti gambar.
Saya tahu Anda dapat memeriksa apakah DOM sudah siap, tetapi saya tidak tahu apakah ini sama dengan ketika halaman dimuat sepenuhnya.
javascript
Ben Shelock
sumber
sumber
Jawaban:
Itu namanya
load
. Itu datang waaaaay sebelum DOM siap ada, dan DOM siap sebenarnya dibuat untuk alasan yang tepat yangload
menunggu pada gambar.sumber
window.onload
dipanggil ketika setiap halaman komponen / sumber daya (yaitu * termasuk * gambar). Apakah saya benar?onload
menunggu semua sumber daya yang merupakan bagian dari dokumen. Ini tidak termasuk, tentu saja, permintaan yang dibuat secara dinamis yang bukan merupakan bagian dari dokumen itu sendiri, misalnya permintaan AJAX.addEventListener("load", function(){
...})
alih-alih menimpaonload
properti.Biasanya Anda dapat menggunakan
window.onload
, tetapi Anda mungkin memperhatikan bahwa peramban baru-baru ini tidak menyalawindow.onload
ketika Anda menggunakan tombol riwayat maju / mundur.Beberapa orang menyarankan contortions aneh untuk mengatasi masalah ini, tetapi sungguh jika Anda hanya membuat
window.onunload
handler (bahkan yang tidak melakukan apa-apa), perilaku caching ini akan dinonaktifkan di semua browser. The MDC mendokumentasikan ini "fitur" cukup baik, tapi untuk beberapa alasan masih ada orang yang menggunakansetInterval
dan hacks aneh lainnya.Beberapa versi Opera memiliki bug yang dapat diatasi dengan menambahkan hal-hal berikut di halaman Anda:
Jika Anda hanya mencoba untuk mendapatkan fungsi javascript yang disebut sekali per-tampilan (dan belum tentu setelah DOM selesai memuat), Anda dapat melakukan sesuatu seperti ini:
Sebagai contoh, saya menggunakan trik ini untuk memuat file yang sangat besar ke dalam cache di layar pemuatan:
sumber
Demi kelengkapan, Anda mungkin juga ingin mengikatnya ke DOMContentLoaded, yang sekarang didukung secara luas
Info lebih lanjut: https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded
sumber
$.ready
saya pikir itu memberikan kontribusi yang baik. Btw. Saya akan menggunakanaddEventListener
-metode juga untukload
acara tersebut, karena memungkinkan Anda untuk memiliki beberapa panggilan balik:window.addEventListener("load", function(event){ // your code here });
Coba ini, Hanya Jalankan Setelah Seluruh Halaman Dimuat
Dengan Javascript
Oleh Jquery
sumber
$(window)
membuat saya berpikir ini akan menjadi jquery - kan? Atau apakah saya mendapatkan beberapa sintaks javascript bingung? (Saya baru mengenal JS).$(document).ready();
ketika jQuery tersedia?Coba kode ini
kunjungi https://developer.mozilla.org/en-US/docs/DOM/document.readyState untuk rincian lebih lanjut
sumber
"interactive"
tidak terisi penuh."complete"
terisi penuhacara window.onload akan diaktifkan ketika semuanya dimuat, termasuk gambar dll.
Anda ingin memeriksa status siap DOM jika Anda ingin kode js Anda dieksekusi sedini mungkin, tetapi Anda masih perlu mengakses elemen DOM.
sumber
Javascript menggunakan
onLoad()
acara tersebut, akan menunggu halaman dimuat sebelum dieksekusi.Jika Anda menggunakan fungsi siap dokumen jQuery framework kode akan dimuat segera setelah DOM dimuat dan sebelum konten halaman dimuat:
sumber
Anda mungkin ingin menggunakan window.onload , karena dokumen menunjukkan bahwa itu tidak diaktifkan hingga DOM siap dan SEMUA aset lainnya di halaman (gambar, dll.) Dimuat.
sumber
Dan inilah cara untuk melakukannya dengan PrototypeJS :
sumber
Di browser modern dengan javascript modern (> = 2015) Anda dapat menambahkan
type="module"
ke tag skrip Anda, dan semua yang ada di dalam skrip itu akan dieksekusi setelah seluruh halaman dimuat. misalnya:browser yang lebih lama juga akan memahami
nomodule
atribut. Sesuatu seperti ini:Untuk informasi lebih lanjut, Anda dapat mengunjungi javascript.info .
sumber
Jika Anda perlu menggunakan banyak
onload
penggunaan$(window).load
saja (jQuery):sumber
Jadi pada dasarnya javascript sudah memiliki metode onload di jendela yang dieksekusi halaman mana yang terisi penuh termasuk gambar ...
Anda dapat melakukan sesuatu:
sumber
Pembaruan 2019: Ini adalah jawaban yang berhasil untuk saya. Karena saya memerlukan beberapa permintaan ajax untuk memecat dan mengembalikan data terlebih dahulu untuk menghitung item daftar.
sumber