স্ক্রিপ্ট ট্যাগে ওলোডলোড ইভেন্টটি ফায়ার করার চেষ্টা করা হচ্ছে


106

আমি ক্রমানুসারে একটি সেট স্ক্রিপ্ট লোড করার চেষ্টা করছি, তবে আমার উপর ওভারলোড ইভেন্টটি গুলি চালাচ্ছে না।

    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;
        el.onload = function(script){
            console.log(script + ' loaded!');
            if (scripts.length) {
                loadScripts(scripts);
            }
            else {
                console.log('run app');
                MK.init();
            }
        };

        $body.append(el);
    }

    loadScripts(scripts);

আমার ধারণা, এল.অনলোডের মতো নেটিভ ইভেন্টগুলিতে আগুন জ্বলবে না যখন ডকুমে উপাদান যুক্ত করতে jQuery ব্যবহৃত হয় is আমি যদি নেটিভ ব্যবহার করি document.body.appendChild(el)তবে এটি প্রত্যাশার মতো আগুন ধরে।


এখানে যান: Thi লিঙ্ক: stackoverflow.com/questions/4845762/... এই ব্যবহার fuull হয়
Jitesh

উত্তর:


149

আপনি সেট করা উচিত srcঅ্যাট্রিবিউট পরonload ঘটনা, f.ex:

el.onload = function() { //...
el.src = script;

ইভেন্টটি সংযুক্ত করার আগে আপনার স্ক্রিপ্টটি ডিওমে যুক্ত করতে হবে onload:

$body.append(el);
el.onload = function() { //...
el.src = script;

মনে রাখবেন যে আপনাকে readystateIE সমর্থন যাচাই করতে হবে । আপনি যদি jQuery ব্যবহার করে থাকেন তবে আপনি এই getScript()পদ্ধতিটিও দেখতে পারেন : http://api.jquery.com/jQuery.getScript/


11
এটি আসলে এটি ঠিক করে না। তবে আমি যদি কেবল document.body.appendChild(el)$ ('বডি') এর পরিবর্তে ব্যবহার করি তবে অ্যাপেন্ড (এল); তারপরে ওলোডলোড ইভেন্টটি প্রত্যাশার মতো আগুন ধরিয়ে দেয়।
chovy

34
ক্রম কেন গুরুত্বপূর্ণ তা বুঝতে আপনি আমাকে সহায়তা করতে পারেন?
chovy

12
@David কেন নয় পরিশেষে যোগ উপাদান শেষ, মত জায়গায় সুপারিশ হিসাবে html5rocks.com/en/tutorials/speed/script-loading ? এটি আপনাকে ইভেন্ট শ্রোতা যুক্ত করার ক্রমটি তৈরি করে srcএবং অপ্রাসঙ্গিকভাবে সেট করে ।
স্টুয়ার্ট পি। বেন্টলে

4
আমি কৌতূহলী: DOM এর সাথে কোনও বৈশিষ্ট্য onloadএবং srcবৈশিষ্ট্যগুলি নির্ধারণের আগে সংযুক্ত করা কেন গুরুত্বপূর্ণ ?
জেক উইলসন

4
যদি স্ক্রিপ্টটি ক্যাশে করা থাকে, তবে আপনি এসআরসি যুক্ত করার সাথে সাথে আইটেমটি লোড হয়ে যায় এবং অনলোড লোড হয় না। এসআরসি-র পূর্বে অ্যানলোডটি যুক্ত করা নিশ্চিত করবে যে ক্যাশেড স্ক্রিপ্টগুলির জন্য অনলোড লোড।
জোনশিপম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.