Saya ingin membuat kotak peringatan setelah gambar dimuat, tetapi jika gambar disimpan di cache browser, .onload
acara tidak akan diaktifkan.
Bagaimana cara memicu peringatan ketika gambar telah dimuat terlepas dari apakah gambar telah di-cache atau tidak?
var img = new Image();
img.src = "img.jpg";
img.onload = function () {
alert("image is loaded");
}
javascript
image-loading
Oto Shavadze
sumber
sumber
Jawaban:
Saat Anda membuat gambar secara dinamis, setel
onload
properti sebelumsrc
.Fiddle - diuji pada rilis Firefox dan Chrome terbaru.
Anda juga dapat menggunakan jawabannya dalam posting ini , yang saya adaptasi untuk satu gambar yang dihasilkan secara dinamis:
Biola
sumber
.src
sebelum menyetel .onload? Anda melakukannya dengan benar di contoh kode pertama, tetapi mengacaukan yang kedua. Yang kedua tidak akan berfungsi dengan baik di beberapa versi IE.=]
Ini menggunakan.complete
pemeriksaan jika gambar sudah di-cache, maka kode itu mendemonstrasikannya. Tentu saja, untuk praktik terbaik, Anda selalu dapat menyetelsrc
after all handler binding..complete
kasus ini. Cukup setel penangan beban Anda terlebih dahulu sebelum menyetel.src
dan TIDAK PERNAH diperlukan. Saya telah menulis tayangan slide yang digunakan oleh ribuan situs di setiap browser yang memungkinkan dan teknik pertama bekerja setiap saat. Tidak perlu memeriksa.complete
kapan membuat gambar baru dari awal seperti ini.=]
. Juga @ jfriend00 dapatkah Anda memeriksa apakah gambar dimuat di IE? Ingin tahu apakah ini masalah dengan jaringan saya atau dengan IE dan gambar.img.src = ''
sebelum menetapkan src baru jika digunakan sebelumnya.Jika src sudah disetel maka peristiwa tersebut diaktifkan dalam kasus yang di-cache bahkan sebelum Anda mengikat pengendali peristiwa. Jadi, Anda juga harus memicu acara berdasarkan
.complete
.contoh kode:
sumber
Ada dua solusi yang mungkin untuk situasi semacam ini:
Tambahkan sufiks unik ke gambar
src
untuk memaksa browser mendownloadnya lagi, seperti ini:Dalam kode ini setiap kali menambahkan stempel waktu saat ini ke akhir URL gambar, Anda membuatnya unik dan browser akan mengunduh gambar itu lagi
sumber
.onload
penangan sebelum menyetel.src
nilai dan Anda tidak akan melewatkan acara onload di beberapa versi IE.Saya telah menemui masalah yang sama hari ini. Setelah mencoba berbagai metode, saya menyadari bahwa hanya menempatkan kode ukuran dalam
$(window).load(function() {})
bukannyadocument.ready
akan memecahkan bagian dari masalah (jika Anda tidak ajaxing halaman).sumber
$(document).ready
untuk$(window).load
memecahkan masalah saya.Saya menemukan bahwa Anda dapat melakukan ini di Chrome:
Menyetel .src ke dirinya sendiri akan memicu acara onload.
sumber