Rumah >hujung hadapan web >tutorial js >Mengapa Skrip Saya Tidak Memuatkan Peristiwa Mencetuskan Apabila Memuatkan Berbilang Skrip Secara Berurutan?

Mengapa Skrip Saya Tidak Memuatkan Peristiwa Mencetuskan Apabila Memuatkan Berbilang Skrip Secara Berurutan?

Susan Sarandon
Susan Sarandonasal
2024-11-04 01:43:30682semak imbas

Why Doesn't My Script Onload Event Trigger When Loading Multiple Scripts Sequentially?

Peristiwa Muatkan Skrip Tidak Mencetuskan

Apabila cuba memuatkan satu siri skrip secara berurutan, acara onload gagal dicetuskan. Pemeriksaan kod di bawah mendedahkan isu:

<code class="javascript">var scripts = [
        '//cdnjs.cloudflare.com/ajax/libs/less.js/1.3.3/less.min.js',
        '//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.min.js',
        MK.host+'/templates/templates.js'
    ];

    function loadScripts(scripts){
        var script = scripts.shift();
        var el = document.createElement('script');
        el.src = script;  // Removed: el.src assignment here
        el.onload = function(script){
            console.log(script + ' loaded!');
            if (scripts.length) {
                loadScripts(scripts);
            }
            else {
                console.log('run app');
                MK.init();
            }
        };

        $body.append(el);  // Added: el appended before onload
        el.src = script;   // Moved: el.src assignment here
    }

    loadScripts(scripts);</code>

Isu ini berpunca daripada peletakan pendengar acara onload yang salah dan penetapan atribut src. Kod yang betul ialah:

<code class="javascript">        el.onload = function(script){
            console.log(script + ' loaded!');
            if (scripts.length) {
                loadScripts(scripts);
            }
            else {
                console.log('run app');
                MK.init();
            }
        };

        $body.append(el);
        el.src = script;</code>

Dengan memastikan skrip dilampirkan pada DOM sebelum melampirkan acara onload dan dengan menetapkan atribut src selepas acara onload, gelagat yang dijangkakan tercapai. Selain itu, adalah penting untuk ambil perhatian bahawa untuk sokongan IE, keadaan sedia perlu diperiksa. Untuk pengguna jQuery, kaedah getScript() menyediakan alternatif yang mudah untuk memuatkan skrip.

Atas ialah kandungan terperinci Mengapa Skrip Saya Tidak Memuatkan Peristiwa Mencetuskan Apabila Memuatkan Berbilang Skrip Secara Berurutan?. 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