天天看点

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>

继续阅读