Saya menggunakan kode berikut untuk menjalankan beberapa pernyataan setelah pemuatan halaman.
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
Tetapi kode ini tidak berfungsi dengan baik. Fungsi ini dipanggil meskipun beberapa gambar atau elemen sedang dimuat. Yang saya inginkan adalah memanggil fungsi agar halaman dimuat sepenuhnya.
javascript
html
image
Neeraj Kumar
sumber
sumber
$(window).load()
alert
fungsi sebelum jendela digambar ulang (membuatnya terlihat seperti dipanggil sebelum dimuat)? Kode terlihat baik-baik saja, dan memaksa pengguna untuk mengunduh pustaka besar mungkin tidak akan memperbaiki masalah ini atau membuatnya lebih mudah untuk didiagnosis.Jawaban:
ini mungkin berhasil untuk Anda:
atau jika kenyamanan Anda dengan jquery,
$(document).ready()
diaktifkan di DOMContentLoaded, tetapi peristiwa ini tidak diaktifkan secara konsisten di antara browser. Inilah sebabnya mengapa jQuery kemungkinan besar akan menerapkan beberapa solusi berat untuk mendukung semua browser. Dan ini akan membuat sangat sulit untuk "secara tepat" mensimulasikan perilaku menggunakan Javascript biasa (tapi bukan tidak mungkin tentunya).seperti yang disarankan Jeffrey Sweeney dan J Torres, saya pikir lebih baik memiliki
setTimeout
fungsi, sebelum mengaktifkan fungsi seperti di bawah ini:sumber
ready
tidak akan melakukan apa yang diminta OP.ready
diaktifkan saat DOM dimuat, bukan setelah elemen dimuat.load
akan aktif setelah elemen selesai memuat / rendering.load
).setTimeout
adalah ide yang buruk. Ini bergantung pada pemuatan halaman di bawah 3 detik (atau n detik tergantung pada nilai apa yang Anda pilih.) Jika pemuatan memakan waktu lebih lama, itu tidak akan berfungsi, dan jika halaman memuat lebih cepat, itu harus menunggu tanpa alasan.JavaScript
sama untuk jQuery:
CATATAN: - Jangan gunakan markup di bawah ini (karena itu menimpa deklarasi sejenis lainnya):
sumber
Jika Anda dapat menggunakan jQuery, lihat load . Anda kemudian dapat mengatur fungsi Anda untuk berjalan setelah elemen Anda selesai dimuat.
Misalnya, pertimbangkan halaman dengan gambar sederhana:
Penangan kejadian bisa terikat ke gambar:
Jika Anda membutuhkan semua elemen di jendela saat ini untuk dimuat, Anda dapat menggunakan
sumber
load
metode jQuery hanya mengikat fungsi ke acara pemuatan menggunakan Javascript? Bagaimana ini bisa berbeda dari apa yang sudah dilakukan OP?addEventListener
daripada mengikatonload
properti DOM0 .Saya agak bingung apa yang Anda maksud dengan pemuatan halaman selesai, "Pemuatan DOM" atau "Pemuatan Konten" juga? Dalam pemuatan halaman html dapat mengaktifkan peristiwa setelah dua jenis peristiwa.
Pemuatan DOM: Yang memastikan seluruh pohon DOM dimuat dari awal hingga akhir. Tetapi tidak memastikan memuat konten referensi. Misalkan Anda menambahkan gambar dengan
img
tag, jadi acara ini memastikan bahwa semuaimg
dimuat tetapi tidak ada gambar yang dimuat dengan benar atau tidak. Untuk mendapatkan acara ini Anda harus menulis cara berikut:Atau menggunakan jQuery:
Setelah DOM dan Content Load: Yang menunjukkan DOM dan Content memuat juga. Ini akan memastikan tidak hanya
img
tag itu akan memastikan juga semua gambar atau konten relatif lainnya dimuat. Untuk mendapatkan acara ini Anda harus menulis cara berikut:Atau menggunakan jQuery:
sumber
DOMContentLoaded
event handler sepertinya tidak melakukan apa pun untuk saya, tetapiload
melakukannya.Jika Anda ingin memanggil fungsi js di halaman html Anda, gunakan acara onload. Peristiwa onload terjadi saat agen pengguna selesai memuat jendela atau semua frame dalam FRAMESET. Atribut ini dapat digunakan dengan elemen BODY dan FRAMESET.
sumber
Dengan cara ini Anda dapat menangani kedua kasus - jika halaman sudah dimuat atau belum:
sumber
Atau Anda dapat mencoba di bawah ini.
Ini berfungsi di semua kasus. Ini hanya akan terpicu ketika seluruh halaman dimuat.
sumber
Anda terbaik sejauh yang saya tahu adalah menggunakan
Jawaban # 1 menggunakan
DOMContentLoaded
peristiwa ini merupakan langkah mundur karena DOM akan dimuat sebelum semua aset dimuat.Jawaban lain merekomendasikan
setTimeout
yang saya akan sangat menentang karena ini sepenuhnya subyektif terhadap kinerja perangkat klien dan kecepatan koneksi jaringan. Jika seseorang berada di jaringan yang lambat dan / atau memiliki cpu yang lambat, sebuah halaman dapat memakan waktu beberapa hingga puluhan detik untuk dimuat, sehingga Anda tidak dapat memprediksi berapa lama waktunya.setTimeout
dibutuhkan.Adapun
readystatechange
, aktif setiap adareadyState
perubahan yang menurut MDN akan tetap sebelumload
acara.sumber
sumber
Jika Anda tidak menggunakan kerangka kerja JS apa pun, proyek ini adalah cara terbaik untuk mendapatkan status siap dom, dengan kompatibilitas lintas browser
https://github.com/ded/domready/blob/master/ready.js
sumber
Jika Anda sudah menggunakan jQuery, Anda dapat mencoba ini:
sumber
Saya dapat memberi tahu Anda bahwa jawaban terbaik yang saya temukan adalah meletakkan skrip "driver" tepat setelah
</body>
perintah. Ini adalah yang termudah dan, mungkin, lebih universal daripada beberapa solusi di atas.Rencananya: Di halaman saya ada meja. Saya menulis halaman dengan tabel ke browser, lalu mengurutkannya dengan JS. Pengguna dapat menggunakannya dengan mengklik tajuk kolom.
Setelah meja diakhiri a
</tbody>
perintah, dan badan diakhiri, saya menggunakan baris berikut untuk memanggil JS penyortiran untuk mengurutkan tabel berdasarkan kolom 3. Saya mendapatkan skrip penyortiran dari web sehingga tidak direproduksi di sini. Setidaknya untuk tahun depan, Anda dapat melihat ini dalam operasi, termasuk JS, distatic29.ILikeTheInternet.com
. Klik "di sini" di bagian bawah halaman. Itu akan memunculkan halaman lain dengan tabel dan skrip. Anda dapat melihatnya memasang data kemudian dengan cepat menyortirnya. Saya perlu mempercepatnya sedikit tetapi dasar-dasarnya sudah ada sekarang.MakerMikey
sumber
Coba jQuery ini :
sumber
ready
tidak akan melakukan apa yang diminta OP.ready
diaktifkan saat DOM dimuat, bukan setelah elemen dimuat.load
akan aktif setelah elemen selesai memuat / rendering.memanggil fungsi setelah waktu pemuatan halaman lengkap habis
sumber
Saya cenderung menggunakan pola berikut untuk memeriksa dokumen untuk menyelesaikan pemuatan. Fungsi mengembalikan Promise (jika Anda perlu mendukung IE, sertakan polyfill ) yang diselesaikan setelah dokumen selesai dimuat. Ini digunakan di
setInterval
bawah karena implementasi yang serupa dengansetTimeout
dapat menghasilkan tumpukan yang sangat dalam.Tentu saja, jika Anda tidak harus mendukung IE:
Dengan fungsi tersebut, Anda dapat melakukan hal berikut:
sumber
Saya menggunakan komponen web sehingga berfungsi untuk saya:
sumber
Letakkan skrip Anda setelah tag tubuh selesai ... berfungsi ...
sumber