Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Apakah kelemahan dalam kaedah beban jquery?

Apakah kelemahan dalam kaedah beban jquery?

青灯夜游
Lepaskan: 2023-01-28 15:17:35
asal
2762 orang telah melayarinya

Kecacatan kaedah pemuatan jquery: 1. Kaedah pemuatan akan secara automatik mengabaikan teg kepala, badan dan skrip 2. Masalah pengimbangan bar skrol akan berlaku selepas pemuatan dinamik fungsi kaedah beban. Ia boleh diselesaikan dengan menambah "$(document).scrollTop(0);"; masalah caching; 5. Akan ada masalah kerosakan struktur.

Apakah kelemahan dalam kaedah beban jquery?

Persekitaran pengendalian tutorial ini: sistem windows7, versi jquery3.6, komputer Dell G3.

Kaedah jquery load() boleh membantu kami menduplikasi bahagian dokumen halaman, seperti bar tajuk dan bahagian maklumat bawah. Kami boleh mengekstrak html templat dan kemudian memuatkannya secara dinamik ke dalam setiap halaman melalui kaedah pemuatan. Beberapa masalah dihadapi semasa penggunaan

Kecacatan 1: Kaedah pemuatan secara automatik mengabaikan tag kepala, badan dan skrip

1. Jika anda ingin memuatkan kandungan dokumen di kepala dan badan, anda boleh membungkus kandungan dalam div dan kemudian memuatkannya

2. Dalam bahagian skrip, kita boleh menggunakan panggilan balik kaedah beban Fungsi dicipta dan dimuatkan secara dinamik

3. Tidak disyorkan untuk memuatkan helaian gaya secara dinamik, jika tidak, akan ada masalah berkelip halaman, iaitu, apabila halaman dimuat semula, gambar tanpa memaparkan gaya akan muncul selama 1 saat, dan kemudian gambar biasa akan dipulihkan (sebab Sama seperti di bawah)

Kecacatan 2: Masalah pengimbangan bar skrol akan berlaku selepas pemuatan dinamik

Apabila memuatkan semula halaman . Bar tatal mengimbangi.
Dalam keadaan biasa, kami akan meletakkan fail skrip di hujung badan dokumen untuk menghalang js daripada menyekat pemaparan penyemak imbas Ini menyebabkan kami melaksanakan kaedah pemuatan kami selepas halaman yang dimuatkan secara dinamik adalah yang terakhir satu. Bar tatal telah ditetapkan di bahagian atas dari awal selepas memuatkan bahagian pengepala secara dinamik, bar tatal akan bergerak ke bawah dan tidak kembali ke atas >

Penyelesaian

Tambah $(document).scrollTop(0);dalam fungsi panggil balik kaedah pemuatan, atau gunakan atribut async bagi teg skrip untuk muatkan skrip js secara tak segerak, dan kemudian anda boleh Skrip diletakkan di kepala

Kecacatan 3: Masalah pemuatan tak segerak

Memandangkan beban adalah dicetuskan secara tidak segerak, dua baris kod dalam kaedah berikut adalah Mereka dilaksanakan serentak pada masa yang sama Disebabkan kelewatan rangkaian dan isu lain, tidak pasti ayat mana yang akan dilaksanakan dahulu Dan < ;div id="templateId">init

elemen dengan id templateId dihantar melalui beban dimuatkan.

Jika $("#templateId").html("hellow"); dalam baris ketiga dilaksanakan dahulu, kemudian $("#templateId") tidak dapat ditemui (ini Div belum dimuatkan lagi), sebenarnya, operasi html ("hello") tidak akan dilaksanakan

function load(targetId,templateName) {
    $("#"+targetId).load(contextPath+templateName);
    $("#templateId").html("hello");
}
Salin selepas log masuk
Kecacatan 4: Masalah cache

Untuk mengurangkan beban pada pelayan permintaan, banyak penyemak imbas membuat perkara yang sama meminta alamat dan mengoptimumkan data sejarah daripada cache setempat Oleh itu, kita perlu menambah beberapa akhiran dinamik selepas alamat.

        function load(targetId,templateName) {
            var nowDate = new Date();
            var randomId = nowDate.getTime();//防缓存
            $("#"+targetId).load(contextPath+templateName+"?"+randomId);
        }
Salin selepas log masuk
Kecacatan 5: Struktural. masalah kerosakan

Atas dasar perangkap 1 (masalah caching), anda juga mungkin menghadapi Masalah yang lebih mendalam ialah jika data yang kami muatkan tidak mematuhi spesifikasi ia akan memusnahkan struktur dom asal, menyebabkan keabnormalan seterusnya dalam mengambil dom dan nod lain Contohnya

Jika data yang diperoleh melalui beban adalah.