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

Susan Sarandon
Lepaskan: 2024-11-04 01:43:30
asal
651 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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