rIslamic - الخلاصات - الارشيف -مفضلتي - راسلني
لنقوم بأعداد البرنامج الإعداد الأولي مثل صنع القوائم او تعريف بعض الكائنات هنا و هناك … لكن المشكلة هي أن هذا الحدث لا ينفذ الا عند تمام جلب الصفحة بما فيها من صور !! و هذا يعني وقتا طويلا و قد يؤثر على عمل الصفحة بشكل كبير خصوصا مع الأيجاكس ….
اترك تعليقا....
>> المشكلة مع window.onload ...
2006-10-12 (1427-9-19)- في :جافاسكربت - التعليقات (2)وجدت هذه المعلومات على الانترنت هنا :
http://dean.edwards.name/weblog/2005/09/busted
و
http://dean.edwards.name/weblog/2005/09/busted2
و لأنه أمر مهم أحببت وضعه …
ملخص المشكلة : هي أننا كثيرا ما نستخدم window.onload او بالشكل الاخر في واصفة body
<body onload="someFunction();"> لنقوم بأعداد البرنامج الإعداد الأولي مثل صنع القوائم او تعريف بعض الكائنات هنا و هناك … لكن المشكلة هي أن هذا الحدث لا ينفذ الا عند تمام جلب الصفحة بما فيها من صور !! و هذا يعني وقتا طويلا و قد يؤثر على عمل الصفحة بشكل كبير خصوصا مع الأيجاكس ….
الحل : هو جعل مثل هذه المهام مرتبطة بالانتهاء من صنع خريط الكائنات التابعة للمصفحة و ليس جلب الصفحة !!! و الحلول موجودة في الروابط أعلاه …و جمعتها هنا :
فقط غير اسم الدالة kickStart الى الدالة التي تريد …
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
kickStart = function(){
// هنا كودك
}
/**
*
this takes care of the onload event ...
by dean edwards: http://dean.edwards.name
*/
//////////////////////////////////////// firefox ///////////////////////////////
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", kickStart, false);
}
//////////////////////////////////////// IE ///////////////////////////////
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
kickStart(); // call the onload handler
}
};
/*@end @*/
//////////////////////////////////////// Safari /////////////////////////////////
if (/WebKit/i.test(navigator.userAgent)) { // sniff
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
clearInterval(_timer);
delete _timer;
kickStart(); // call the onload handler
}
}, 10);
}
اترك تعليقا....
جاري ارسال التعليق.... 
الان مع الاصدار الجديد من YUI Extension من Jack Slocum يوجد حدث event يتناول هذه المشكلة .. YAHOO.ext.EventManager.onDocumentReady http://www.jackslocum.com