Rumah > hujung hadapan web > tutorial js > Mengapa Peristiwa `onload` Tidak Menyala Apabila Melampirkan Elemen Skrip Menggunakan jQuery?

Mengapa Peristiwa `onload` Tidak Menyala Apabila Melampirkan Elemen Skrip Menggunakan jQuery?

Barbara Streisand
Lepaskan: 2024-11-04 02:45:02
asal
347 orang telah melayarinya

Why Doesn't the `onload` Event Fire When Appending a Script Element Using jQuery?

Masalah OnLoad Event dengan Tag Skrip

Dalam percubaan untuk memuatkan skrip dalam urutan, isu timbul apabila acara onload gagal dicetuskan . Coretan kod berikut menunjukkan masalah:

function loadScripts(scripts){
    var script = scripts.shift();
    var el = document.createElement('script');
    el.src = script;
    el.onload = function(script){
        console.log(script + ' loaded!');
        if (scripts.length) {
            loadScripts(scripts);
        }
        else {
            console.log('run app');
            MK.init();
        }
    };
    $body.append(el);
}
Salin selepas log masuk

Acara onload tidak menyala apabila elemen skrip dilampirkan pada DOM menggunakan jQuery ($body.append(el)). Walau bagaimanapun, menggunakan JavaScript asli document.body.appendChild(el) mencetuskan acara seperti yang dimaksudkan.

Penyelesaian:

Untuk menyelesaikan isu ini, ubah suai kod seperti berikut:

function loadScripts(scripts){
    var script = scripts.shift();
    var el = document.createElement('script');
    $body.append(el);
    el.onload = function(script){
        console.log(script + ' loaded!');
        if (scripts.length) {
            loadScripts(scripts);
        }
        else {
            console.log('run app');
            MK.init();
        }
    };
    el.src = script;
}
Salin selepas log masuk

Dengan melampirkan skrip pada DOM sebelum menetapkan atribut src, acara onload akan menyala sebagai dijangka. Selain itu, pertimbangkan untuk menggunakan kaedah getScript() jQuery untuk keserasian merentas pelayar.

Atas ialah kandungan terperinci Mengapa Peristiwa `onload` Tidak Menyala Apabila Melampirkan Elemen Skrip Menggunakan jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan