BOM(一):window对象常见事件、定时器

news2024/11/19 9:25:18

BOM(一)

    • BOM介绍
    • window 对象的常见事件
    • 定时器
    • location 对象
    • navigator 对象
    • history 对象

BOM介绍

BOM是浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。

BOM的构成

请添加图片描述

window 对象的常见事件

1.窗口加载事件
传统写法

window.onload = function(){}

事件监听写法

window.addEventListener(“load”,function(){});

window.onload 是窗口 (页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、CSS 文件等), 就调用的处理函数。

注意:

  • 有了 window.onload 就可以把 JS 代码写到页面元素的上方,因为 onload 是等页面内容全部加载完毕,再去执行处理函数。
  • window.onload 传统注册事件方式 只能写一次,如果有多个,会以最后一个 window.onload 为准。
  • 如果使用 addEventListener 则没有限制

例如:

请添加图片描述

如果此时讲script中的获取button元素写在button上方,则点击之后不会弹出警示框,因为浏览器是从上往下阅读代码的.

例二:
请添加图片描述

但是如果script加入了window.onload,此时点击按钮依旧会弹出警示框,原因是window.onload是在页面加载完所有元素之后才进行script阅读,这种传统方式会以最后一次window.onload为准,如果想要多个触发事件,采用事件监听的方式

例三:采用事件监听方式

请添加图片描述

效果为:先弹出点击1,再弹出点击2

DOMContentLoaded方式:

document.addEventListener(‘DOMContentLoaded’,function(){})

  • DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等。
  • Ie9以上才支持
  • 如果页面的图片很多的话, 从用户访问到onload触发可能需要较长的时间, 交互效果就不能实现,必然影响用户的体验,此时用DOMContentLoaded 事件比较合适。

例如:

请添加图片描述
先弹出22,再弹出11。
原因:load 等页面内容全部加载完毕,包含页面dom元素、图片、flash、css等等。DOMContentLoaded是DOM加载完毕,不包含图片、falsh、css等就可以执行 加载速度比load更快一些。

2.调整窗口大小事件
传统方式

window.onresize = function(){}

监听事件方式

window.addEventListener(“resize”,function(){});

window.onresize 是调整窗口大小加载事件, 当触发时就调用的处理函数。

例如:

请添加图片描述

注意:

  • 只要窗口大小发生像素变化,就会触发这个事件。
  • 利用这个事件完成响应式布局。 window.innerWidth 当前屏幕的宽度

定时器

1.setTimeout() 定时器

window.setTimeout(调用函数, [延迟的毫秒数]);

  • setTimeout() 方法用于设置一个定时器(只运行一次),该定时器在定时器到期后执行调用函数。
  • window 可以省略。
  • 这个调用函数可以直接写函数,或者写函数名或者采取字符串‘函数名()'三种形式。第三种不推荐
  • 延迟的毫秒数省略默认是 0,如果写,必须是毫秒。
  • 定时器可能有很多,经常给定时器赋值一个标识符。(给定时器起一个变量名)
  • 1000毫秒等于一秒

请添加图片描述

请添加图片描述

2.停止 setTimeout() 定时器

window.clearTimeout(timeoutID)

clearTimeout()方法取消了先前通过调用 setTimeout() 建立的定时器。

注意:

  • window 可以省略。
  • 里面的参数就是定时器的标识符 。

请添加图片描述

3. setInterval() 定时器

window.setInterval(回调函数, [间隔的毫秒数]);

setInterval() 方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。

注意:

  • window 可以省略。
  • 这个调用函数可以直接写函数,或者写函数名或者采取字符串 ‘函数名()’ 三种形式。
  • 间隔的毫秒数省略默认是 0,如果写,必须是毫秒,表示每隔多少毫秒就自动调用这个函数。
  • 因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。
  • 第一次执行也是间隔毫秒数之后执行,之后每隔毫秒数就执行一次。
  • setInterval是反复调用函数,前面的setTimeout只调用一次
    请添加图片描述
    4.停止 setInterval() 定时器

window.clearInterval(intervalID);

clearInterval()方法取消了先前通过调用 setInterval()建立的定时器。

注意:

  • window 可以省略。
  • 里面的参数就是定时器的标识符 。
    请添加图片描述
    请添加图片描述

location 对象

window 对象提供了一个 location 属性用于获取或设置窗体的 URL,并且可以用于解析 URL 。 因为这个属性返回的是一个对象,所以我们将这个属性也称为 location 对象。

1.URL
统一资源定位符 (Uniform Resource Locator, URL) 是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL 的一般语法格式为:

protocol://host[:port]/path/[?query]#fragment

http://www.itcast.cn/index.html?name=andy&age=18#link

请添加图片描述

2.location 对象的属性

请添加图片描述

案例:5秒钟之后自动跳转页面
案例分析:

  • 利用定时器做倒计时效果 时间到了,就跳转页面。
  • 使用 location.href

请添加图片描述
action属性的作用是:提交表单后,将表单数据发送到指定位置,name里面的值作为参数用来传递。
点击登录按钮后,name的值uname传递给第二个页面的location.search

3.location 对象的方法

请添加图片描述
请添加图片描述

点击之后可以回退到原来页面

请添加图片描述

加载页面功能

请添加图片描述

navigator 对象

navigator 对象包含有关浏览器的信息,它有很多属性,我们最常用的是 userAgent,该属性可以返回由客户机发送服务器的 user-agent 头部的值。

if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
    window.location.href = "";     //手机
 } else {
    window.location.href = "";     //电脑
 }

history 对象

window 对象给我们提供了一个 history 对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的 URL。

请添加图片描述

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/147893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python|每日一练|斐波那契数列|优化算法|迭代|动态计算|排列组合|时间复杂度:走楼梯

题目名称:走楼梯 时间限制:1000ms内存限制:256M 题目描述 现在有一截楼梯,根据你的腿长,你一次能走 1 级或 2 级楼梯,已知你要走 n 级楼梯才能走到你的目的楼层,请实现一个方法,计…

进程状态|操作系统|什么是pcb|什么是僵尸进程 |什么是孤儿进程 【超详细的图文解释】【Linux OS】

说在前面 今天给大家带来操作系统中进程状态的详解。 本篇博主将通过从进程状态的广泛概念,深入到Linux操作系统详细的一些进程状态。在解释进程状态的过程中,博主还会穿插一些操作系统一些重要概念!本篇干货满满,请大家不要吝啬…

新建的普通用户无法使用sudo的问题

文章目录1.为什么新建用户无法使用sudo指令1. 查看sudoers的权限2. 切换成root用户解决问题1. 切换root用户2.进入 vim编辑器3. 配置成功1.为什么新建用户无法使用sudo指令 [lynVM-8-8-centos ~]$ sudo ls [sudo] password for lyn: lyn is not in the sudoers file. This i…

声学特征提取普及笔记

声学特征如何提取? 一、声学特征预处理 首先进行预处理,就是我们最后要提取一帧一帧的这种声学特征,这个语音信号经过预处理然后提取特征,那么特征也有用原始的傅里叶变换,STFT短时傅里叶变换得到这个语谱图特征,也有用FBANK就没有滤波器的输出,还有用MFCC。预处理包括…

SQL 通配符

通配符可用于替代字符串中的任何其他字符。 SQL 通配符 在 SQL 中,通配符与 SQL LIKE 操作符一起使用。 SQL 通配符用于搜索表中的数据。 在 SQL 中,可使用以下通配符: 通配符描述%替代 0 个或多个字符_替代一个字符[charlist]字符列中的…

Rabbitmq消息队列详解(三)——SpringBoot整合

SpringBoot整合 依赖&#xff1a; <!-- 加入rabbitmq --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>配置&#xff1a; spring:application:nam…

【C初阶】C初阶考试题

选择加编程一、选择题&#xff08;一&#xff09;递归&#xff08;二&#xff09;后置发生死循环&#xff08;三&#xff09;后置运算&#xff08;四&#xff09;操作符运算&#xff08;五&#xff09;全局变量与生命周期&#xff08;六&#xff09;操作符知识&#xff08;七&a…

前端对接微信公众号网页开发流程,前期配置

微信公众号网页开发&#xff0c;其实就是我们开发的h5网页需要放到微信浏览器环境中使用&#xff0c;但是需要对接公众号授权&#xff0c;授权之后可以获取到用户的个人信息&#xff0c;以及可以使用公众号提供的一些API,如&#xff1a;图片上传、图片预览、获取位置信息、微信…

【Java异常】Java异常监控重要手段 --异常链

目录标题前言一、异常链介绍1.1 异常链概述1.2 Java中如何使用异常链二、Throwable1.1 Throwable中哪些API提供存储cause的功能1.2 Throwable中如何获取cause三、项目实战演练示例1:未存储cause示例2:存储cause两层嵌套示例3:存储cause三层嵌套四、总结前言 “异常链”无论是在…

构造题(agc059_b)

https://atcoder.jp/contests/agc059/tasks/ B - Arrange Your Balls Editorial / Time Limit: 2 sec / Memory Limit: 1024 MB Score : 700700 points Problem Statement You have NN balls of colors C_1, C_2, \ldots, C_NC1​,C2​,…,CN​. Here, all colors are rep…

引发C++程序内存错误的常见原因分析与总结

目录 1、概述 2、变量未初始化 2.1、变量未初始化的场景说明 2.2、对0xcccccccc、0xcdcdcdcd和0xfeeefeee等常见异常值的辨识度 3、空指针与野指针 3.1、空指针 3.2、野指针 4、线程栈溢出 5、内存越界 6、内存泄漏 7、堆内存被破坏 8、内存访问违例 8.1、访问64K…

7.Isaac教程--在Python中开发Codelets

在Python中开发Codelets 虽然就性能而言&#xff0c;编写小码的最佳语言是 C&#xff0c;但并非应用程序的所有小码都需要使用相同的语言。 Isaac SDK 还支持 Python codelets&#xff0c;或 pyCodelets&#xff0c;适合那些更熟悉 Python 的人。 本节向您展示如何执行以下操作…

可视化系列讲解:SVG绘制基本图形及如何复用

文章目录一、SVG坐标系二、SVG坐标系单位三、SVG绘制基本图形3.1 矩形3.2 圆形3.3 椭圆3.4 直线3.5 折线3.6 多边型3.7 路径3.8 文字3.9 图片四、SVG元素的组合五、图形元素定义复用和使用定义的复用5.1 defs与use5.2 symbol与use一、SVG坐标系 SVG 使用的坐标系统&#xff08;…

【Python】函数——传递任意数量的实参

传递任意数量的实参和传递任意数量的关键字实参 *args&#xff1a;表示用来接收任意数量的实参&#xff0c;其中&#xff0c;形参*args的星号会让Python创建一个名为args的空元组&#xff0c;并将接收到的任意数量的实参存储在这个元组中。**kwargs&#xff1a;表示用来接收任…

ARX给CAD发送命令的几种方法

本文迁移自本人网易博客&#xff0c;写于2015年11月16日。1、ads_queueexpr( _T("(command\"_POINT\" \"1,1,0\")") );该函数CAD未公开&#xff0c;使用时提前声明下就可以了。可以参考帮助文件中&#xff1a;Tips and Techniques 。2、acDocMan…

嵌入式:人机交互接口设计详解

文章目录键盘和LED的接口原理HD7279A与S3C2410A的连接原理图键盘和LED控制的编程实例LCD显示原理LCD控制器概述嵌入式处理器与LCD的连接S3C2410A的LCD控制器&#xff08;1&#xff09;STN LCD&#xff08;2&#xff09;TFT LCDLCD控制器的框图LCD接口信号STN LCD控制器操作&…

Java IO流 - 转换流的使用详细介绍

文章目录转换流字符输入转换流字符输出转换流转换流 之前我们代码编码和文件编码都是UTF-8, 所以没有出现中文乱码的问题 我们知道代码编码和文件编码的格式如果不一致的话会出现中文乱码的问题 那么如果在开发中, 我们确实会遇到编码不一致的情况如何解决呢? 我们可以使用字符…

【高阶数据结构】手撕红黑树(超详细版本)

&#x1f308;欢迎来到数据结构专栏~~手撕红黑树 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句…

JMS规范和AMQP协议

参考资料&#xff1a;《JMS与AMQP简述以及比较》《AMQP协议详解》《MQ消息队列的JMS规范和AMQP协议的区别》《消息队列之JMS和AMQP对比》写在开头&#xff1a;本文为学习后的总结&#xff0c;可能有不到位的地方&#xff0c;错误的地方&#xff0c;欢迎各位指正。一般情况下MQ的…

【数据结构与算法——C语言版】6. 排序算法(3)——插入排序

前言 在本系列的上两篇文章分别介绍了两种O(n2)的排序算法——选择排序和冒泡排序&#xff0c;今天是第三种O(n2)的排序算法&#xff1a;插入排序。 插入排序 核心思想 它的基本思想是将一个记录插入到已经排好序的有序表中&#xff0c;从而产生一个新的、记录数增 1 的有序…