rIslamic - الخلاصات - الارشيف -مفضلتي - راسلني 

>> المشكلة مع window.onload ...



وجدت هذه المعلومات على الانترنت هنا :

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


Hello! Good Site! Thanks you! ocgyqlmjibpl


اترك تعليقا....




--- بامكانك استخدام [ Textile ]





Imagine what you desire. Will what you imagine. Create what you will.(George Bernard Shaw) : Love what you create (me)