天天看點

01.判斷頁面加載完成的方法

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

<html xmlns="http://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>

//測試使用

domready(function () {

alert("判斷dom是否可用:dom可用!")

});

</head>

<body>

</body>

</html>

繼續閱讀