01.判斷頁麵加載完成的方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="https://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>判斷Dom加載完畢</title> <mce:script type="text/javascript" language="javascript"><!-- function domReady(f) { //如果Dom已經加載,立即執行函數 if (domReady.done) { return f(); } //增加一個函數判斷Dom是否加載完畢 if (domReady.timer) { domReady.ready.push(f); //把它加入待執行函數清單中 } else { //為頁麵加載完畢綁定一個事件 addEvent(window, "load", isDOMReady); //初始化執行函數的數組 domReady.ready = [f]; //盡可能的檢查Dom是否可用 domReady.timer = setInterval(isDOMReady, 13); } } //檢查Dom是否可用 function isDOMReady() { //如果我們能判斷出Dom是否可用,忽略 if (domReady.done) { return false; } //檢查若幹元素是否可用 if (document && document.getElementsByTagName && document.getElementById && document.body) { //如果可用,停止檢查 clearInterval(domReady.timer); domReady.timer = null; //執行所有等待的函數 for (var i = 0; i < domReady.ready.length; i++) { domReady.ready[i](); } //記錄Dom加載完成的標識 domReady.ready = null; domReady.done = true; } } //添加事件函數 function addEvent(element, type, handler) { if (!handler.$$guid) { handler.$$guid = addEvent.guid++; //為每一個事件處理函數賦予一個獨立的ID } //為元素建立一個事件類型的散列表 if (!element.events) { element.events = {}; } //為沒對元素/事件建立一個事件處理函數的散列表 var handlers = element.events[type]; if (!handlers) { handlers = element.events[type] = {}; //存儲已有的事件處理函數(如果已存在一個) if (element["on" + type]) { handelers[0] = element["on" + type]; //在散列表中存儲該事件的處理函數 handelers[handler.$$guid] = handler; //賦予一個全局事件處理函數來處理所有工作 element["on" + type] = handleEvent; }; //創建獨立ID的計數器 addEvent.guid = 1; function removeEvent(element, type, handler) { //從散列表中刪除事件處理函數 if (element.events && element.events[type]) { delete element.events[type][handler.$$guid]; } function handleEvent(event) { var returnValue = true; //獲取事件對象(IE使用全局的事件對象) event = event || fixEvent(window.event); //獲取事件處理函數散列表的引用 var handlers = this.events[event.type]; //依次執行每個處理函數 for (var i in handlers) { this.$$handleEvent = handlers[i]; if (this.$$handleEvent(event) === false) { returnValue = false; } } return returnValue; }; //增加一些IE事件對象缺乏的方法 function fixEvent(event) { event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; return event; } fixEvent.preventDefault = function () { this.returnValue = false; } fixEvent.stopPropagation = function () { this.cancelBubble = true; } } } } // --></mce:script> <mce:script type="text/javascript" language="javascript"><!-- //測試使用 domReady(function () { alert("判斷Dom是否可用:Dom可用!") }); // --></mce:script> </head> <body> </body> </html>
最後更新:2017-04-02 06:51:33