Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memuatkan Imej Secara Asynchronously dengan jQuery?

Bagaimanakah Saya Boleh Memuatkan Imej Secara Asynchronously dengan jQuery?

Linda Hamilton
Linda Hamiltonasal
2024-11-15 09:38:021007semak imbas

How Can I Asynchronously Load Images with jQuery?

Memuatkan Imej Secara Asynchronously dengan jQuery

Teknik pemuatan tak segerak adalah penting untuk meningkatkan prestasi halaman web dengan menghalang permintaan menyekat yang boleh melambatkan halaman rendering. Teknik ini menjadi amat berguna apabila memuatkan imej luaran yang mungkin mengambil masa untuk dimuatkan, yang berpotensi membawa kepada pengalaman pengguna yang tidak menentu.

Satu pendekatan biasa untuk memuatkan imej tak segerak ialah menggunakan kaedah $.ajax(). Walau bagaimanapun, perlu diingat bahawa kaedah ini mungkin tidak sesuai untuk memuatkan imej, kerana ia direka untuk mendapatkan semula data dan tidak dioptimumkan secara khusus untuk pengendalian imej.

Pendekatan Alternatif: Menggunakan Elemen Imej

Cara yang lebih cekap untuk memuatkan imej secara tidak segerak dengan jQuery adalah dengan mencipta elemen imej baharu secara dinamik. Begini cara untuk mencapainya:

var img = $("<img />").attr('src', 'http://somedomain.com/image.jpg')
    .on('load', function() {
        if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
            alert('broken image!');
        } else {
            $("#something").append(img);
        }
    });

Kod ini mencapai perkara berikut:

  1. Mencipta elemen imej HTML baharu ($("")) dan menetapkan atribut src kepada URL imej yang diingini.
  2. Menambahkan pendengar acara untuk acara 'muat', yang dicetuskan apabila imej telah selesai dimuatkan.
  3. Dalam pengendali beban, semak sama ada imej telah dimuatkan sepenuhnya dan dimensinya adalah sah.
  4. Jika imej telah berjaya dimuatkan, ia menambahkan elemen imej pada DOM elemen dengan ID "sesuatu."

Tamat Masa Tersuai Pelaksanaan

Pendekatan ini tidak termasuk tetapan tamat masa, yang penting untuk mengendalikan kemungkinan ralat 404. Untuk melaksanakan tamat masa tersuai, anda boleh memasukkan kod berikut:

var timeout = setTimeout(function() {
    alert('Image timed out');
}, 5000); // 5 seconds timeout

img.on('load', function() {
    clearTimeout(timeout); // Clear the timeout once the image loads
});

Menambah kod ini pada coretan sebelumnya memastikan bahawa jika imej tidak dimuatkan dalam tamat masa yang ditentukan (5 saat dalam kes ini), ia memaparkan amaran yang menunjukkan tamat masa.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memuatkan Imej Secara Asynchronously dengan jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn