Bagaimana cara Anda menambahkan onload
acara ke elemen?
Bisakah saya menggunakan:
<div onload="oQuickReply.swap();" ></div>
untuk ini?
javascript
html
monkey_boys
sumber
sumber
body
lebih baikdiv
div
elemen tidak "memuat".Jawaban:
Tidak bisa. Cara termudah untuk membuatnya berfungsi adalah dengan menempatkan panggilan fungsi langsung setelah elemen
Contoh:
atau - bahkan lebih baik - tepat di depan
</body>
:... jadi itu tidak memblokir konten berikut dari memuat.
sumber
</body>
. fe jika Anda ingin menyembunyikan<div>
satu - satunya jika javascript diaktifkan tetapi hindari "flashing". Waktu visibilitas tergantung pada berapa lama browser perlu memuat / mem-parsing semua skrip inline / eksternal.onload
The
onload
event hanya dapat digunakan padadocument(body)
itu sendiri, frame, gambar, dan skrip. Dengan kata lain, itu dapat dilampirkan hanya pada badan dan / atau setiap sumber daya eksternal . Div bukan sumber daya eksternal dan dimuat sebagai bagian dari tubuh, sehinggaonload
acara tidak berlaku di sana.sumber
onload
tidak berfungsi pada<script>
tanpasrc
atribut HTML (saya mencoba menggunakan saran ini dalam skrip inline, dan ternyata tidak berfungsi)Anda dapat memicu beberapa js secara otomatis pada elemen IMG menggunakan onerror, dan tanpa src.
sumber
acara onload hanya didukung dengan beberapa tag seperti yang tercantum di bawah ini.
Di sini referensi untuk acara onload
sumber
Coba ini! Dan tidak pernah menggunakan trigger dua kali pada div!
Anda dapat menentukan fungsi untuk memanggil sebelum tag div.
DEMO: jsfiddle
sumber
onload
) dan kemudian memanggil fungsi-fungsi tersebut. Skrip berfungsi bahkan jika Anda mengubah atribut ke sesuatu selainonload
mis. Jsfiddle.net/mrszgbxhSaya hanya ingin menambahkan di sini bahwa jika ada yang ingin memanggil fungsi saat memuat acara div & Anda tidak ingin menggunakan jQuery (karena konflik seperti dalam kasus saya) maka cukup panggil fungsi setelah semua kode html atau kode lain yang telah Anda tulis termasuk kode fungsi dan cukup panggil fungsi.
ATAU
sumber
kita dapat menggunakan MutationObserver untuk menyelesaikan masalah secara efisien dengan menambahkan kode sampel di bawah ini
sumber
Pada November 2019, saya mencari cara untuk membuat (hipotetis)
onparse
EventListener
untuk<elements>
yang tidak mengambilonload
.(Hipotetis)
onparse
EventListener
harus dapat mendengarkan ketika elemen diurai .Percobaan Ketiga (dan Solusi Definitif)
Saya cukup senang dengan Percobaan Kedua di bawah ini, tetapi saya baru sadar bahwa saya dapat membuat kode lebih pendek dan sederhana, dengan membuat acara yang dibuat khusus:
Ini adalah solusi terbaik.
Contoh di bawah ini:
parse
Event
window.onload
kapan saja) yang:data-onparse
parse
EventListener
ke masing-masing elemen tersebutparse
Event
ke masing-masing elemen untuk mengeksekusiCallback
Contoh kerja:
Usaha kedua
The Attempt Pertama bawah (berdasarkan
@JohnWilliams
'brilian Kosong Gambar Hack ) menggunakan hardcoded<img />
dan bekerja.Saya pikir itu mungkin untuk menghapus hardcoded
<img />
sepenuhnya dan hanya secara dinamis memasukkannya setelah mendeteksi, dalam elemen yang perlu memecat suatuonparse
peristiwa, atribut seperti:Ternyata, ini bekerja dengan sangat baik.
Contoh di bawah ini:
data-onparse
<img src />
dan menambahkannya ke dokumen, segera setelah masing-masing elemen tersebutonerror
EventListener
ketika mesin rendering mem-parsing masing-masing<img src />
Callback
dan menghapus yang dihasilkan secara dinamis<img src />
dari dokumenContoh kerja:
Percobaan pertama
Saya dapat membangun
@JohnWilliams
'<img src>
retas (di halaman ini, mulai 2017) - yang sejauh ini merupakan pendekatan terbaik yang pernah saya temui.Contoh di bawah ini:
onerror
EventListener
saat mesin rendering diurai<img src />
Callback
dan hapus<img src />
dari dokumenContoh kerja:
sumber
gunakan iframe dan sembunyikan iframe berfungsi seperti tag tubuh
sumber
Saya perlu menjalankan beberapa kode inisialisasi setelah sepotong html (contoh templat) dimasukkan, dan tentu saja saya tidak memiliki akses ke kode yang memanipulasi templat dan memodifikasi DOM. Gagasan yang sama berlaku untuk setiap modifikasi parsial DOM dengan memasukkan elemen html, biasanya a
<div>
.Beberapa waktu yang lalu, saya melakukan hack dengan event onload yang hampir tidak terlihat yang
<img>
terkandung dalam a<div>
, tetapi menemukan bahwa gaya scoped, kosong juga akan melakukan:Pembaruan (15 Jul 2017) -
<style>
Onload tidak didukung di versi terakhir IE. Edge memang mendukungnya, tetapi beberapa pengguna melihat ini sebagai browser yang berbeda dan tetap menggunakan IE. The<img>
elemen tampaknya bekerja lebih baik di semua browser.Untuk meminimalkan dampak visual dan penggunaan sumber daya gambar, gunakan src sebaris yang membuatnya kecil dan transparan.
Satu komentar yang saya rasa perlu saya buat tentang menggunakan
<script>
adalah seberapa sulit untuk menentukan<div>
skrip mana yang dekat, terutama dalam templating di mana Anda tidak dapat memiliki id yang identik dalam setiap contoh yang dihasilkan oleh template. Saya pikir jawabannya mungkin document.currentScript, tetapi ini tidak didukung secara universal. Suatu<script>
elemen tidak dapat menentukan lokasi DOMnya sendiri secara andal; referensi ke 'ini' menunjuk ke jendela utama, dan tidak membantu.Saya percaya perlu untuk puas menggunakan
<img>
elemen, meskipun konyol. Ini mungkin lubang di kerangka DOM / javascript yang bisa menggunakan plugging.sumber
Karena
onload
acara hanya didukung pada beberapa elemen, Anda harus menggunakan metode alternatif.Anda dapat menggunakan MutationObserver untuk ini:
sumber
Saya sangat suka perpustakaan YUI3 untuk hal semacam ini.
Lihat: http://developer.yahoo.com/yui/3/event/#onavailable
sumber
onload
.Saya belajar javascript dan jquery dan sedang melalui semua jawaban, saya menghadapi masalah yang sama ketika memanggil fungsi javascript untuk memuat elemen div. Saya mencoba
$('<divid>').ready(function(){alert('test'})
dan itu berhasil untuk saya. Saya ingin tahu apakah ini cara yang baik untuk melakukan panggilan onload pada elemen div seperti yang saya lakukan menggunakan pemilih jquery.Terima kasih
sumber
Seperti yang telah dikatakan, Anda tidak bisa menggunakan event onLoad pada DIV sebagai gantinya tetapi sebelum tag body.
tetapi jika Anda memiliki satu file footer dan memasukkannya dalam banyak halaman. lebih baik untuk memeriksa terlebih dahulu jika div yang Anda inginkan ada di halaman yang ditampilkan, sehingga kode tidak dieksekusi di halaman yang tidak mengandung DIV untuk membuatnya memuat lebih cepat dan menghemat waktu untuk aplikasi Anda.
jadi Anda perlu memberikan DIV itu ID dan melakukan:
sumber
Saya memiliki pertanyaan yang sama dan sedang mencoba untuk mendapatkan Div untuk memuat skrip gulir, menggunakan onload atau memuat. Masalah yang saya temukan adalah bahwa itu akan selalu berfungsi sebelum Div dapat dibuka, tidak selama atau setelah, jadi itu tidak akan berhasil.
Lalu saya datang dengan ini sebagai pekerjaan di sekitar.
Saya menempatkan Div di dalam Span dan memberikan Span dua peristiwa, mouseover dan mouseout. Kemudian di bawah Div itu, saya menempatkan tautan untuk membuka Div, dan memberikan tautan itu acara untuk onclick. Semua acara sama persis, untuk membuat halaman gulir ke bawah ke bawah halaman. Sekarang ketika tombol untuk membuka Div diklik, halaman akan melompat turun sebagian, dan Div akan terbuka di atas tombol, menyebabkan peristiwa mouseover dan mouseout membantu mendorong skrip gulir ke bawah. Maka setiap gerakan mouse pada saat itu akan mendorong skrip untuk terakhir kalinya.
sumber
Anda dapat menggunakan interval untuk memeriksanya sampai dimuat seperti ini: https://codepen.io/pager/pen/MBgGGM
sumber
Pertama untuk menjawab pertanyaan Anda: Tidak, Anda tidak bisa, tidak secara langsung seperti yang Anda inginkan. Mungkin agak terlambat untuk menjawab, tapi ini solusi saya, tanpa jQuery, javascript murni. Ini awalnya ditulis untuk menerapkan fungsi mengubah ukuran ke textareas setelah DOM dimuat dan pada keyup.
Cara yang sama Anda dapat menggunakannya untuk melakukan sesuatu dengan (semua) divs atau hanya satu, jika ditentukan, seperti:
Jika Anda benar-benar perlu melakukan sesuatu dengan div, dimuat setelah DOM dimuat, misalnya setelah panggilan ajax, Anda bisa menggunakan peretasan yang sangat membantu, yang mudah dimengerti dan Anda akan menemukannya ... bekerja-dengan- elemen-sebelum-the-dom-adalah-siap ... . Ia mengatakan "sebelum DOM siap" tetapi berfungsi dengan cara yang sama, setelah penyisipan ajax atau js-appendChild-apa pun div. Inilah kodenya, dengan beberapa perubahan kecil pada kebutuhan saya.
css
javascript
sumber
Ketika Anda memuat beberapa html dari server dan memasukkannya ke dalam pohon DOM Anda dapat menggunakannya
DOMSubtreeModified
namun sudah usang - sehingga Anda dapat menggunakanMutationObserver
atau hanya mendeteksi konten baru di dalam fungsi loadElement secara langsung sehingga Anda tidak perlu menunggu acara DOMTampilkan cuplikan kode
sumber
Anda dapat melampirkan pendengar acara seperti di bawah ini. Ini akan memicu setiap kali div memiliki pemilih
#my-id
memuat sepenuhnya ke DOM.Dalam hal ini, EventName mungkin 'memuat' atau 'klik'
https://api.jquery.com/on/#on-events-selector-data-handler
sumber
Gunakan acara body.onload, baik melalui atribut (
<body onload="myFn()"> ...
) atau dengan mengikat suatu acara di Javascript. Ini sangat umum dengan jQuery :sumber
Coba ini.
Coba yang ini juga. Anda harus menghapus
.
darioQuickReply.swap()
agar fungsi berfungsi.sumber
alert("This is a div.");
dipanggil ketika baris ini dieksekusi dan hasilnya (yangundefined
) ditugaskan untukdiv.onload
. Yang sama sekali tidak ada gunanya.sumber