window onload和$(document).ready()及DOMContentLoaded的区别(DOM加载完毕前后调用)

news/2024/7/11 1:31:28 标签: jQuery, js, DOM加载完毕

这两个函数的差别就在于调用的时机不同

一般情况一个页面响应加载的顺序是:域名解析-加载html-加载js和css-加载图片等其他信息。

在日常开发中我们经常需要获取页面的元素进行操作,而在编写代码的时候为了代码易读性我们会将js代码放在一起引入页面中,这就导致js引擎编译代码时可能会出现一些错误,如方法、变量未定义等,这是因为当操作页面DOM元素的js代码执行时,页面中相应的DOM元素还没有渲染,所以会出错。

所以一般的js文件,或者页面操作的js文件,都放在html之后引入。放在页面的最后面。

$(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加载完成之前调用
})(jQuery)

 


http://www.niftyadmin.cn/n/509292.html

相关文章

浏览器对象详解(BOM)

在进行开发的时很多时候需要使用到浏览器对象,通过学习对浏览器对象有了一个大概了解,这里总结一下。 目录 window navigator screen location document history window window对象充当全局作用域,同时也代表浏览器窗口。 属性&#…

如何开发jQuery插件(转)

原文:https://www.cnblogs.com/ajianbeyourself/p/5815689.html#_label0 阅读目录基本方法支持链式调用让插件接收参数面向对象的插件开发关于命名空间关于变量定义及命名压缩的好处工具GitHub Service Hook原文:http://www.cnblogs.com/Wayou/p/jquery_…

jquery楼层滚动重要知识总结(页面滚动距离获取)

浏览器页面的滚动事件 $(window).scroll(function() {// 当页面发生滚动时要做的事情 }); 获取当前页面内容区域的高度 $(window).innerHeight() 通常用 innerHeight()/2 内容区域一半的高度 获取 滚动条到页面顶部的垂直距离 $(document).scrollTop() …

jquery 轮播图(从零开发编写)

淡入淡出效果 利用的是绝对定位&#xff0c;绝对定位的元素会出现堆叠&#xff0c;jquery控制图片的隐藏与显示。 分享一个定位相关知识点 html <div class"banner"><ul class"bannerImg"><li><a href"script:;"><…

css选择器兼容性

ID选择器&#xff1a; #header {} 类选择器&#xff1a; .header {} 元素选择器&#xff1a; div {} 子选择器&#xff1a; ul > li {} 后代选择器&#xff1a; div p {} 伪类选择器&#xff1a; a:hover {} 属性选择器&#xff1a; input[type"text&quo…

vue-lazyload 插件使用((图片懒加载)

1&#xff0c;安装 // 安装 npm install vue-lazyload --save 2&#xff0c;注册 // 注册 main.js全局注册 import Vue from vue import vueLazyload from vue-lazyloadVue.use(vueLazyload);在注册的时候是可以传入配置参数的&#xff0c;常规配置如下 Vue.use(VueLazy…

开发记录(切换上一页下一页)

有一个table&#xff0c;某一列渲染数据是可查看的&#xff0c;点击当前单元格&#xff0c;弹出模态框&#xff0c;模态框为子组件&#xff0c;table属于父组件&#xff0c;模态框渲染从父组件获取的数据&#xff0c;框架为vue 父组件 html <template><el-containe…

Vue中的watch 和computed 属性

之前写过一篇关于computed计算属性的文章&#xff0c;详见这里。 computed内的function只执行一次&#xff0c;仅当function内涉及到Vue实例绑定的data的值的改变&#xff0c;function才会从新执行&#xff0c; 并修改DOM上的内容。 在官方文档中&#xff0c;强调了computed…