WebAPI(四) BOM;延时函数;JS执行机制(同步异步);location对象;history对象;navigation对象

news2024/12/24 2:08:14

文章目录

  • BOM
    • 1. 定时器-延时函数
    • 2. JS执行机制
      • (1)、同步与异步
      • (2)、事件循环
    • 3. location对象
      • (1)、href属性获取完整的url地址
      • (2)search属性获取地址中携带的参数
      • (3) hash:获取地址中的#后边的部分
      • (3) reload: 刷新当前页面,传入参数true表示强制刷新
    • 4. history对象
    • 5. navigation对象

BOM

BOM是浏览器对象模型,BOM包含DOM;
在这里插入图片描述
window对象是一个全局对象。像document,alert()等都是BOM的属性;
window对象下的属性和方法调用的时候可以省略window;

// document.querySelector() 等价于 window.document.querySelector()
console.log(document === window.document);  // true
// 方法也是挂在window对象上的
function fn () {
    console.log(11);
}
window.fn() //11

所有通过var定义在全局作用域的变量、函数都是window的属性和方法。
let const定义的变量没挂在window对象上。

1. 定时器-延时函数

回顾间歇函数定时器:setInterval
语法:setTimeout(回调函数,等待的毫秒数)
setTimeout()仅执行一次;

let timeId = setTimeout(function fn () {
    console.log('3S后被打印');
}, 3000)
// 清除延时函数,在递归函数部分会用到
clearTimeout(timeId)

延时函数:只执行一次
间歇函数:每隔一段时间执行一次

2. JS执行机制

首先看两组代码,判断输出结果:

console.log(111);
setTimeout(function () {
    console.log(222);
}, 3000)
console.log(333);

这组代码的打印顺序为:111 333 222

console.log(1);
setTimeout(function () {
    console.log(2);
}, 0)
console.log(3);

这组代码的打印顺序为:1 3 2

(1)、同步与异步

JS是单线程,一次只能做一件事;如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。因此出现了同步与异步。

  • 同步任务:一下子可做完的任务。在主线程上执行,形成执行栈。
  • 异步任务:耗费时间的任务。被添加到任务队列(消息队列)中。
    • 普通事件:如 click,resize
    • 资源加载:如load,error
    • 定时器:包括setInterval,setTimeout
      在这里插入图片描述

首先执行栈中的同步任务,执行完毕,会按次序读取任务队列中的异步任务。

(2)、事件循环

console.log(1);
document.addEventListener('click', function () {
    console.log(4);
})
console.log(2);
setTimeout(function () {
    console.log(3);
}, 3000);

这段代码的执行结果是1243或1234;

流程图:
在这里插入图片描述
  首先,代码中的同步任务在执行栈中执行;异步任务交给异步API进行处理,这部分由浏览器负责,浏览器是多线程的,能够同时监听多个异步任务,看哪个异步任务满足执行条件,将满足执行条件的异步任务推入任务队列中,等待执行栈读取任务队列,执行事件。

  比如监听点击事件,若点击事件触发,则将该异步任务推入任务队列中,延时函数等待的间隔事件达到3秒了,该异步任务也会推入任务队列中。

  执行栈会不停的来任务队列中查看是否有可以执行的异步任务。有,则读入执行栈中执行。没有,则继续查看任务队列。

由于主线程不断的重复获得任务、执行任务、再获得任务、再执行任务,所有这种机制被称为事件循环(event loop)

3. location对象

location对象常用属性和方法有:

(1)、href属性获取完整的url地址

对href赋值时用于地址的跳转

console.log(location);
console.log(location.href);

在这里插入图片描述
案例:5S后跳转页面

<a href="https://www.baidu.cn">支付成功<span>0</span>秒后跳转</a>
<script>
let num = 5;
// 1. 获取元素
const span = document.querySelector('span')
span.innerHTML = `${num}`
let timeId = setInterval(function () {
    // 2. 声明倒计时变量
    num--;
    span.innerHTML = `${num}`
    // 3. 倒计时结束,停止计时,跳转
    if (num === 0) {
        clearInterval(timeId)
        location.href = 'https://www.baidu.cn'
    }
}, 1000)
</script>

(2)search属性获取地址中携带的参数

地址中携带的参数,即?后面的部分。

<form action="">
    account: <input type="text" name="account">
    pwd: <input type="password" name="pwd">
    <input type="submit">
</form>

在这里插入图片描述
提交之后:
在这里插入图片描述

(3) hash:获取地址中的#后边的部分

比如网易云音乐的网站中:
在这里插入图片描述
在这里插入图片描述
经常用于不刷新页面,显示不同的页面(Vue路由)

(3) reload: 刷新当前页面,传入参数true表示强制刷新

reloadBtn.addEventListener('click', function () {
    // 刷新
    location.reload()
    // 强制刷新
    location.reload(true)
})

4. history对象

window对象给我们提供了一个history对象,与浏览器历史记录进行交互。
方法:

  • back():后退功能
  • forward():前进功能
  • go(参数):参数是1,则前进1个页面;如果是-1,则后退一个页面、

5. navigation对象

可以判断是手机还是pc打开,从而切换相应的页面
在这里插入图片描述

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

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

相关文章

025集—— 转义字符\、字符串详解(对比、分割、日期、数字等)——C#学习笔记

本文讲解字符串的比较&#xff1a;忽略大小写与不忽略大小写&#xff0c;内存地址是否相同。 当需要对两个字符串的值进行比较和排序而不需要考虑语言惯例时&#xff0c;请使用基本的序号比较。基本的序号比较 (Ordinal) 是区分大小写的&#xff0c;这意味着两个字符串的字符必…

纳米材料咋设计?蛋白质模块咋用?看这里就知道啦!

大家好&#xff0c;今天我们来了解一项关于蛋白质纳米材料设计的研究——《Blueprinting extendable nanomaterials with standardized protein blocks》发表于《Nature》。蛋白质结构复杂&#xff0c;其组装体的设计颇具挑战。但近期的研究取得了新突破&#xff0c;通过设计标…

高精度治具加工的重要性和创新性

在现代制造业中&#xff0c;高精度治具加工扮演着至关重要的角色。它不仅是生产过程中的关键环节&#xff0c;更是推动行业不断创新和发展的重要力量。时利和将解析高精度治具加工的重要性和创新性。 一、高精度治具加工的重要性 1.确保产品质量 高精度治具能够为生产过程提供准…

API安全 | 发现API的5个小tips

在安全测试目标时&#xff0c;最有趣的测试部分是它的 API。API 是动态的&#xff0c;它们比应用程序的其他部分更新得更频繁&#xff0c;并且负责许多后端繁重的工作。在现代应用程序中&#xff0c;我们通常会看到 REST API&#xff0c;但也会看到其他形式&#xff0c;例如 Gr…

基于yolov8的包装盒纸板破损缺陷测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的包装盒纸板破损缺陷检测系统是一种高效、智能的解决方案&#xff0c;旨在提高生产线上包装盒纸板的质量检测效率与准确性。该系统利用YOLOv8这一前沿的深度学习模型&#xff0c;通过其强大的目标检测能力&#xff0c;能够实时识别并标记出包装盒纸板…

HyperLogLog简介

基数估算 基数估算(Cardinality Estimation)&#xff0c;也称为 count-distinct problem&#xff0c;一直是大数据领域的重要问题之一&#xff0c;顾名思义&#xff0c;基数估算就是为了估算在一批超级大的数据中&#xff0c;它的不重复元素有多少个。常见的基数估算算法包括L…

HTML 基础,尚优选网站设计开发(二)

最近在恶补HTML相关知识点&#xff0c;本人是后端程序员&#xff0c;看到周围很多人都被裁员了&#xff0c;突然想尽早转变成全栈程序员变成独立开发者&#xff0c;有空余接接私单、商单的 尚优选网站设计开发&#xff0c;HTMLCSSJavaScript实际使用 尚优选网站设计开发页面分析…

《Web性能权威指南》-HTTP-读书笔记

HTTP简史 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;。 HTTP 0.9&#xff1a;只有一行的协议 Tim Berners-Lee罗列HTTP协议的几条宏观设计目标&#xff1a;支持文件传输、能够请求对超文本文档的索引搜索、格式化协商机制&#xf…

全季恒温,网球爱好者的理想运动场馆—轻空间

气膜网球馆内配备了先进的恒温恒压系统&#xff0c;不论四季如何变化&#xff0c;都能为运动员们提供一个稳定、舒适的运动环境。凉爽的空气流通&#xff0c;配合无障碍的视觉体验&#xff0c;打造了一个极致的训练与比赛场所。 大人挥拍竞技&#xff0c;孩子们快乐训练 馆内不…

第四届摩纳哥智能化可持续发展码头交流会

第四届摩纳哥智能化可持续发展码头交流会 摩纳哥游艇码头顾问公司&#xff08;M3&#xff09;认为游艇行业的绿色转型需要做到从游艇本身到游艇码头的360度全方位可持续化发展&#xff0c;因此&#xff0c;继今年3月的摩纳哥智能游艇交流会后&#xff0c;他们将于2024年9月22日…

[第三篇 运维与安全管理] ==> 第8章 数据库安全管理与审计

MongoDB 数据库安全管理与审计 8.1 权限管理简介8.2 用户管理8.2.1 创建用户与登录8.2.2 查询用户8.2.3 修改用户8.2.4 删除用户8.2.5 授予用户权限8.2.6 撤销用户权限 8.3 角色管理8.3.1 内建角色8.3.2 创建自定义角色8.3.3 查询自定义角色8.3.4 修改自定义角色8.3.5 删除自定…

day44-测试平台搭建之前端vue学习-基础3

目录 一、条件渲染 二、列表渲染 三、收集表单数据 四、内置指令 五、自定义指令 六、今日学习思维导图 一、条件渲染 1.1.v-if 1).写法 1.1).v-if"表达式" 1.2).v-else-if"表达式" 1.3).v-else"表达式‘ 2).适用于&#xff1a;切换频率较低的场…

Kafka 实战演练:创建、配置与测试 Kafka全面教程

文章目录 1.配置文件2.消费者1.注解方式2.KafkaConsumer 3.依赖1.注解依赖2.KafkaConsumer依赖 本文档只是为了留档方便以后工作运维&#xff0c;或者给同事分享文档内容比较简陋命令也不是特别全&#xff0c;不适合小白观看&#xff0c;如有不懂可以私信&#xff0c;上班期间都…

腾讯地图SDK Android版开发 10 InfoWindow

腾讯地图SDK Android版开发 10 InfoWindow 前言介绍默认风格自定义样式实现方式交互操作播放信息窗口的动画开启多窗口模式 相关类和接口默认样式MarkerOptions 类Marker 类TencentMap类TencentMap.OnInfoWindowClickListener 接口类 自定义样式TencentMap 类TencentMap.InfoWi…

6.2高斯滤波

目录 实验原理 示例代码1 运行结果1 示例代码2 运行结果2 实验代码3 运行结果3 实验原理 在OpenCV中&#xff0c;高斯滤波&#xff08;Gaussian Filtering&#xff09;是一种非常常用的图像平滑处理方法。它通过使用一个高斯核&#xff08;即高斯分布函数&#xff09;对…

Pr 入门系列之二:导入与管理素材(下)

◆ ◆ ◆ 管理素材 导入素材后&#xff0c;项目面板中每一个媒体都只是原始素材的“链接”。 所以&#xff0c;视频编辑过程中一般情况下都不会破坏原始素材。 1、在不同视图模式下组织素材 项目面板提供了三大视图 View供选用&#xff1a;列表视图、图标视图以及自由格式视图…

基于VAE和流模型的AIGC技术

哇哦&#xff0c;VAE&#xff08;变分自编码器&#xff09;和流模型在AI生成内容&#xff08;AIGC&#xff09;领域可真是大放异彩呢&#xff01;&#x1f680;&#x1f31f; 它们就像魔法师一样&#xff0c;能够创造出各种各样、高质量的数据&#xff0c;从图像到音频&#xf…

计算机网络(三) —— 简单Udp网络程序

目录 一&#xff0c;初始化服务器 1.0 辅助文件 1.1 socket函数 1.2 填充sockaddr结构体 1.3 bind绑定函数 1.4 字符串IP和整数IP的转换 二&#xff0c;运行服务器 2.1 接收 2.2 处理 2.3 返回 三&#xff0c;客户端实现 3.1 UdpClient.cc 实现 3.2 Main.cc 实现 …

MongoDB 5.0版本副本集集群

一、MongoDB 5.0版本副本集集群部署 什么是MongoDB的副本集 MongoDB的副本集&#xff08;Replica Set&#xff09;是一种用于提高数据库系统可用性、可靠性和数据冗余性的机制。副本集包含一组相互连接的MongoDB节点&#xff0c;其中包括一个主节点&#xff08;Primary&#…

基于web的赴台展会人员管理系统设计与实现

博主介绍&#xff1a;专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…