美文网首页
第35章 window.onload和$(document).r

第35章 window.onload和$(document).r

作者: kzc爱吃梨 | 来源:发表于2019-05-29 15:47 被阅读0次

这两个函数的差别就在于调用的时机不同,一般情况一个页面响应加载的顺序是:域名解析-加载html-加载js和css-加载图片等其他信息。在日常开发中我们经常需要获取页面的元素进行操作,而在编写代码的时候为了代码易读性我们会将js代码放在一起引入页面中,这就导致js引擎编译代码时可能会出现一些错误,如方法、变量未定义等,这是因为当操作页面DOM元素的js代码执行时,页面中相应的DOM元素还没有渲染,所以会出错。

$(document).ready(function() {
    // DOM元素加载之后做的事情
})

此方法会在DOM元素全部加载完成之后,图片等其他信息加载之前调用,此时便可以肆无忌惮的调用页面DOM元素。JQuery方法的默认参数是document,所以$(docuemnt).ready(function() { ... })就等价于 $().ready(function() { ... })
简写:$(function() { // 操作元素的代码 })

$(function () {
    // 此方法为jQuery DOM加载完成触发的事件
})

原生js,DOM加载完成执行的事件为DOMContentLoaded,不过此方法只能通过 DOM2 级方式添加,即采用addEventListener()/attachEvent() 方式添加才能够使用。

document.addEventListener('DOMContentLoaded', function() {
     // 此方法为原生js DOM加载完成执行的事件
});

jQuery 中经常使用的 $(document).ready(function() { // ...代码... }); 其实监听的就是 DOMContentLoaded 事件

window.onload方法会在页面及所有图片加载完毕触发,window.onload = function() { }

window.onload=function(){
      // 此方法会在DOM加载完成事件之后 执行
}

//或者可以具体到某一个具体的DOM元素
document.getElementById("imgID").onload=function(){
     //do something
}

此时可以访问页面中的所有元素,当js文件引入写在body上面的时候,页面自上向下执行,js中的代码操作页面元素的时候,页面还没有渲染完成,所以无法获取页面元素,而window.onload方法执行时页面所有的元素都已经渲染完毕,所以就不会出现问题。

还有一个方法会在DOM元素加载完成之前调用

(function () {
    // 此方法会在DOM加载完成之前调用

相关文章

网友评论

      本文标题:第35章 window.onload和$(document).r

      本文链接:https://www.haomeiwen.com/subject/hiyytctx.html