首页 > 语言 > JavaScript > 正文

Dom加载让图片加载完再执行的脚本代码

2024-05-06 14:18:07
字体:
来源:转载
供稿:网友
现在,我们来研究一下如何解决这个问题,解决方法就是在DOM加载完毕之后就执行程序。 

       先介绍两个人。一,jquery的作者:John Resig;二,javascript的世界级大师:dean edwards。(大家要记住这两位天才!) 

      jquery里有专门解决DOM加载的函数$(document).ready()(简写就是$(fn)),非常好用!John Resig在《Pro JavaScript Techniques》里,有这样一个方法处理DOM加载,原理就是通过document&& document.getElementsByTagName &&document.getElementById&& document.body 去判断Dom树是否加载完毕。代码如下:
代码如下:
function domReady( f ) {
// 如果DOM加载完毕,马上执行函数
if ( domReady.done ) return f();   
// 假如我们已增加一个函数
if ( domReady.timer ) { 
// 把它加入待执行的函数清单中
domReady.ready.push( f ); 
} else { 
// 为页面加载完成绑定一个事件, 
// 为防止它最先完成. 使用 addEvent(下面列出).
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]();   
// 记录在此已经完成
domReady.ready = null; 
domReady.done = true; 

}
// 由 Dean Edwards 在2005 所编写addEvent/removeEvent,
// 由 Tino Zijdel整理
// http://dean.edwards.name/weblog/2005/10/add-event/
//优点是1.可以在所有浏览器工作;
//2.this指向当前元素;
//3.综合了所有浏览器防止默认行为和阻止事件冒泡的的函数
//缺点就是仅在冒泡阶段工作
function addEvent(element, type, handler) {
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选