| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> $(window).load()方法理解、使用场景 -> 正文阅读 |
|
[JavaScript知识库]$(window).load()方法理解、使用场景 |
$(window).load()、window.οnlοad=function(){}和$(document).ready()方法的区别1、$(window).load() 和window.οnlοad=function(){} ? ? ?是页面中的所有元素(包括图片、flash)等都加载完毕后,才能执行; ? ? ?$(document).ready() 是页面中的DOM元素加载完成后便可执行。 2、$(window).load()和window.οnlοad=function(){} ? ? ?不同的是,前者可以和$(document).ready()一样,可以同时加载多个函数。 window和document的区别?1、window代表的是浏览器窗口,即可视的浏览器窗口 ? ? ? document代表的是整个页面的dom元素? ?即document只是window的一个属性; 2、两者的区别在页面有滚动条时可以直观的显示出来,当出现滚动条时,$(window).height和$(document).height是不相等的,$(document).height比$(window).height大,因为window的高度始终都是可见的浏览器窗口的高度,而document的高度则是整个页面的dom元素的高度,即超出一屏幕了。 ? ?$(window).load()方法的使用场景1、当某一触发事件,需要页面的所有元素都加载完毕后才执行,并且元素不是通过ajax回调填充的情况下,使用$(window).load()即可。
因为回调的html元素的加载完成可能在$(window).load()执行之后,load事件主要就是用来代替原生的window.onload,它只能用在两个场景下: · window对象上。比如$(window).load(fn);。 · 带有URL的元素(images, scripts, frames, iframes)。比如$(“img”).load(fn);。 除此之外,任何元素都没有load事件,比如:$(document).load(fn);这是错误的写法,根本不会执行。 load事件需要页面完全加载完成才可以触发,所谓的完全加载完,不仅仅是dom结构加载完,还需要所有的链接引用都加载完才可以。比如页面中有大量图片,必须等每一个图片都加载完成,才叫完全加载完。 最重要的还没说,jQuery官方文档明确说明load事件的跨浏览器兼容性很差(It doesn't work consistently nor reliably cross-browser)。经过测试,谷歌浏览器仅仅支持(window).load(fn);,而火狐浏览器支持(window).load(fn);,而火狐浏览器支持(window).load(fn);和$(“img”).load(fn);。所以,除非必要情况下,否则强烈不推荐使用load事件。 而ready事件可以加在任意元素上,比如(window).ready(fn);、(window).ready(fn);、(document).ready(fn);、$(“div”).ready(fn);等等。ready事件不要求页面完全加载完,只需要加载完dom结构即可触发 一般情况下一个页面响应加载的基本顺序是:域名解析 -> 加载html -> 加载js和css -> 加载图片等其他信息。那么在编写JS脚本时什么情况下使用(document).ready()又在什么情况下使用(document).ready()又在什么情况下使用(window).load呢; 一、$(document).ready() 从字面的意思上理解,就是文档准备好了。也就是浏览器已经加载并解析完整个html文档,dom树已经建立起来了,然后执行此函数 原生JavaScript中的写法如下:
?jQuery中的写法如下:
二、$(window).load 在网页中所有元素(包括页面中图片,css文件等所有关联文件)完全加载到浏览器后才执行 原生JavaScript中的写法如下:
jQuery中的写法如下:
两者的区别在于: 1.执行时间不同 $(document).ready()是在页面完成HTML的加载并建立了DOM树之后就开始执行,但这并不代表页面的所有数据已经全部加载完成,一些大的图片有会在建立DOM树之后很长一段时间才行加载完成,而$(window).load()就是整个页面已经加载完毕后才执行,包括图片等一些关联文件。 2.可以被执行的次数不同 (document).ready()可以在JavaScript代码中出现多次,并且里面的函数或者代码都可以执行;而(window).load()只能在JavaScript代码中出现一次,如果有多个(window).load(),那么只有最后一个(window).load()里面的函数或者代码才会执行,之前的$(window).load()都将被覆盖; 3.执行的效率不同 如要在dom的元素节点中添加onclick属性节点,这时用(document).ready()就要比用(window).load()的效率高;但是在某些时候还必须得用$(window).load()才行;比如最近一个项目,微博系统,必须等所有dom和图片加载完毕后执行动态高度;
总结一下就是:(window).load()在(document).ready之后执行,且页面中所有内容全部加载完成后才会执行 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 17:11:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |