أشياء جديدة كتبتها طوال فترة ما بعد الظهر بعد ظهر هذا اليوم
يكون boot.js عبارة عن حزمة ملفات أساسية
مضغوطة
يشير test.html إلى
كافة ملفات js الخاصة بـ ad.js، وهناك علاقة من هذا القبيل:
ad.js->ae.js
ad.js->abc.js
ae.js->abc.js
xnamespace ينفذ التحميل المتزامن لملفات js. طالما أن ملف js مكتوب وفقًا للمواصفات، يمكن استخدام use_xnamespace لضمان تحميل المكتبات التي يعتمد عليها قبله.
الشرط الوحيد الذي يتطلبه xnamespace لملفات js هو أن الملف يجب أن يكون محاطًا بوظيفة إغلاق غير مسماة (function(){ })(). حتى لو لم يتم استخدام xnamespace، فهذه أيضًا ممارسة العديد من الأكواد عالية الجودة اختبار المتصفح ie6 ie7 وما يليها NetScape سفاري
فيما يلي محتوى boot.js
لمتصفح Opera Swift الذي فشل في الاختبار
[نسخ] الكود:
(function(){
فار X={};
window.using_xnamespace=using_xnamespace;
window.regist_xnamespace=regist_xnamespace;
window.check_xnamespace=window.get_xnamespace=check_xnamespace;
window.import_xnamespace=import_xnamespace;
window.export_xnamespace=export_xnamespace;
var isIE=(window.navigator.appName=="وظيفة Microsoft Internet Explorer");
getFilePath(namespace)// احصل على مسار الملف بشكل خاص بناءً على مساحة الاسم
{
namespace=namespace.split(".");
var file_path=X.file_path;
فار ط=0;
بينما ((نوع file_path) = = "كائن")
{
file_path=file_path[namespace[i++]];
}
العودة (ملف_مسار)؛
}
وظيفة check_xnamespace(namespace)// تحقق من وجود مساحة الاسم، إذا كانت موجودة، احصل على مساحة الاسم
{
namespace=namespace.split(".");
فار xnamespace=X;
فار ط=0;
بينما (i<namespace.length)
{
if(!xnamespace[namespace[i]])return;
xnamespace=xnamespace[namespace[i++]];
}
إرجاع مساحة الاسم؛
}
وظيفة regist_xnamespace(namespace)//تسجيل مساحة الاسم
{
namespace=namespace.split(".");
فار xnamespace=X;
فار ط=0;
بينما (i<namespace.length)
{
if(!(xnamespace[namespace[i]]))xnamespace[namespace[i]]={};
//if(typeof xnamespace[namespace[i]]!="object")رمي "تعارض التسمية";
xnamespace=xnamespace[namespace[i++]];
}
إرجاع مساحة الاسم؛
}
وظيفة use_xnamespace(namespace)// تحقق من مساحة الاسم وقم بتحميلها
{
// تنبيه ()؛
if(check_xnamespace(namespace))return;
var file_path=getFilePath(namespace);
// تنبيه (ملف_مسار)؛
var scriptElement=document.createElement("script");
scriptElement.src=file_path;
إذا (إيسي)
{
scriptElement.document;
}
آخر
{
//alert(document.getElementsByTagName("head")[0]);
scriptElement.onload=function()
{
X.library_queue.run();
}
document.getElementsByTagName("head")[0].appendChild(scriptElement);
إذا (X.library_queue.push(arguments.callee.caller))
رمي "المكتبة غير محملة"
}
;
}
وظيفة import_xnamespace(مساحة الاسم)
{
var xnamespace=get_xnamespace(namespace);
ل(فار ع في xnamespace)
{
if(window[p]==xnamespace[p])continue;
إذا (نافذة [p]) رمي "تعارض التسمية"؛
window[p]=xnamespace[p];
}
}
دالة Export_xnamespace(مساحة الاسم)
{
var xnamespace=get_xnamespace(namespace);
ل(فار ع في xnamespace)
{
if(window[p]==xnamespace[p])window[p]=undef;
}
}
X.file_path={
أ:{
ب:{
ج:"./abc.js"
},
د:"./ad.js"،
ه:"./ae.js"
}
}
X.library_queue=new Array();
X.library_queue.run=function(){
بينما (هذا الطول)
{
(this.pop())();
}
}
X.library_queue.push=function(f)
{
ل(var i=0;i<this.length;i++)
{
if(this[i].toString()==f.toString())return false;
}
this[i]=f;
عودة صحيحة؛
}
})();
10.21 2007 تم تحديثه بهدوء: تم فصل ملفات Exception وFilePath