تحميل ملفات javascript واحدا واحدا .

إحتجت لإضافة رافع ملفات بإستعمال أجاكس [1] لكن المشكلة هو صعوبة دمج ملفات الجافاسكربت اللزمة مع الملفات الأصلية للسكربت وهو عبارة عن موقع مبني على نسخة قديمة من drupal ... لكن هناك إمكانية حقن كود جافاسكربت بسهولة نوعا ما , لذى قررت بناء كل شيء عبر الجافاسكربت , المشكلة هو أنه يجب أن تضاف ملفات جافاسكربت بشكل متوالي وليس دفعة واحدة ,

هذا كود الجافاسكربت الذي وصلت إليه

var filesLoader = {

    jsLoader : function(srcs , callback){
        if(typeof srcs !== 'object'){
            srcs = [srcs]
        }
        var loaded = false, d = document,s;         
        s = d.createElement('script');          
        s.src=srcs.shift();
        var that = this;

        s.onreadystatechange = s.onload = function() {                  
                if (!loaded) {
                    if(srcs.length > 0){
                        that.jsLoader(srcs , callback);
                    }else{
                        if(callback){
                            callback();
                        }
                    }             
                }
                loaded = true;
          };

        d.getElementsByTagName('head')[0].appendChild(s);

    }

}


// طريقة الإستعمال
var scripts = ['//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'
                ,'jquery.ui.widget.js'
                ,'jquery.iframe-transport.js'
                ,'jquery.fileupload.js'];


filesLoader.jsLoader(scripts,function(){        
     // init(); بناء الواجهة   
});

أي تحسينات فهي مرحب بها

شكرا.

[1]

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

لست خبير في javascript

لكن لمادا لا تستدعيها خارج هذا الملف ؟

scripts = [''];

لم أفهم قصدك , أي ملف ؟!

أن تسدعي الملف الدي يحتوى على الكود أعلاه الدي أرفقته في موضوعك

ثم تستدعي الملفات التالية :

ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'

,'jquery.ui.widget.js'

,'jquery.iframe-transport.js'

,'jquery.fileupload.js'

ما رأيك أن تستدعي الملفات عبر HTML أي أن تكتب في صفحة HTML حتى يتم استدعاء الملفات، ويتم استدعاءها كلها دفعة واحدة. مثلا لاحظ هنا

ههه الكود أعلاه يقوم بنفس الأمر , لكن مطور قليلا بحيث تعطيه مصفوفة من ملفات الجافاسكربت التي تريد دمجها ويقوم الكود بإستدعاء الملفات واحدا واحد , يعني لايستدعي الملف الثاني إلى بعد تحميل الأول , هكذا لن يقع خطأ إذا كان الملف الموالي يعتمد على السابق ,