IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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()即可。


2、当某一触发事件,需要页面的所有元素都加载完毕后才执行,并且元素是通过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中的写法如下:

document.ready=function(){
 alert("ready"); 
}

?jQuery中的写法如下:

$(document).ready(function(){
 alert("ready");
});

或

$(function(){
 alert("ready");
});

二、$(window).load

在网页中所有元素(包括页面中图片,css文件等所有关联文件)完全加载到浏览器后才执行

原生JavaScript中的写法如下:

window.onload = function(){ 
 alert("onload"); 
};

jQuery中的写法如下:

$(window).load(function(){
 alert("onload");
});

两者的区别在于:

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(function(){
    allHeight();//微博左右高度保持一致
})

总结一下就是:(window).load()在(document).ready之后执行,且页面中所有内容全部加载完成后才会执行

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:24:08  更:2022-10-17 12:26:48 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码