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

文章目录

  • 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.rhkb.cn/news/418406.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年入职/转行网络安全,该如何规划?_网络安全职业规划

前言 前段时间&#xff0c;知名机构麦可思研究院发布了 《2022年中国本科生就业报告》&#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;其中&#xff0c;信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景&#xff0c;想必无需我多言&#xff0c;作为…

【每日刷题】Day112

【每日刷题】Day112 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09; 2. 面试题 08.01. 三步问题 - …

没资料的屏幕怎么点亮?思路分享

这次尝试调通一个没资料的屏幕&#xff0c;型号是HYT13264&#xff0c;这个是淘宝上面的老王2.9元屏&#xff0c;成色很好但是长期库存没有资料和代码能点亮&#xff0c;仅仅只有一个引脚定义。这里我使用Arduino Nano作为控制器尝试点亮这个模块。 首先&#xff0c;已知别人找…

flink---window

Window介绍 DataStream: https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/dev/datastream/operators/windows/ SQL: https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/dev/table/sql/queries/window-tvf/ 1、为什么需要Window?…

【AI大模型】基于docker部署向量数据库Milvus和可视化工具Attu详解步骤

&#x1f680; 作者 &#xff1a;“大数据小禅” &#x1f680; 文章简介 &#xff1a;本专栏后续将持续更新大模型相关文章&#xff0c;从开发到微调到应用&#xff0c;需要下载好的模型包可私。 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 目…

项目7-音乐播放器7(测试报告)

1.项目背景 音乐播放器采用前后端分离的方法来实现&#xff0c;基于SSM框架构建&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;同时将其部署到云服务器上。 用户可以轻松注册登录&#xff0c;浏览丰富的音乐库&#xff0c;搜索喜欢的歌曲。系统支持多种音频格式播…

线代第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相…

C++20中支持的非类型模板参数

C20中支持将类类型作为非类型模板参数&#xff1a;作为模板参数传入的对象具有const T类型&#xff0c;其中T是对象的类型&#xff0c;并且具有静态存储持续时间(static storage duration)。 在C20之前&#xff0c;非类型模板参数仅限于&#xff1a;左值引用类型、整数类型、指…

Linux入门攻坚——31、rpc概念及nfs和samba

NFS&#xff1a;Network File System 传统意义上&#xff0c;文件系统在内核中实现 RPC&#xff1a;函数调用&#xff08;远程主机上的函数&#xff09;&#xff0c;Remote Procedure Call protocol 一部分功能由本地程序完成 另一部分功能由远程主机上的 NFS本质…

C++利用jsoncpp库实现写入和读取json文件(含中文处理)

C利用jsoncpp库实现写入和读取json文件 1 jsoncpp常用类1.1 Json::Value1.2 Json::Reader1.3 Json::Writer 2 json文件3 写json文件3.1 linux存储结果3.2 windows存储结果 3 读json文件4 读json字符串参考文章 在C中使用跨平台的开源库JsonCpp&#xff0c;实现json的序列化和反…

【Qt】Qt与Html网页进行数据交互

前言&#xff1a;此项目使用达梦数据库&#xff0c;以Qt制作服务器&#xff0c;Html制作网页客户端界面&#xff0c;可以通过任意浏览器访问。 1、Qt与网页进行数据交互 1.1、第一步&#xff1a;准备qwebchannel.js文件 直接在qt的安装路径里复制即可 1.2、第二步&#xf…

2025届计算机毕业设计:如何构建Java SpringBoot+Vue个人健康档案管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址&#xff1a; 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核&#xff1b; 3、获取你的accessKeySecret和accessKeyId&#xff1b; 方法如下&#xff1a; 获取AccessKey-阿里云帮助中心 4、获取SignNa…

做运营,发布时间很重要

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/#1 作为社交网络与媒体行业的内容运营&#xff0c;我常常被以下问题困扰&#xff1a;用户活跃时间难以预测、内容策划时间紧张、跨平台管理复杂、数据分析繁琐、创意枯竭…

2024整理 iptables防火墙学习笔记大全_modepro iptables

Iptables名词和术语 2iptables表&#xff08;tables&#xff09;和链&#xff08;chains&#xff09; 2表及其链的功能 2  Filter表 2  NAT表 2  MANGLE表 2iptables的工作流程 3iptables表和链的工作流程图 3 二、 iptables实战应用 4iptables命令参数详解 4  iptable…

【视频讲解】Python贝叶斯卷积神经网络分类胸部X光图像数据集实例

全文链接&#xff1a;https://tecdat.cn/?p37604 分析师&#xff1a;Yuanchun Niu 在人工智能的诸多领域中&#xff0c;分类技术扮演着核心角色&#xff0c;其应用广泛而深远。无论是在金融风险评估、医疗诊断、安全监控还是日常的交互式服务中&#xff0c;有效的分类算法都是…

解锁Web3.0——Scaffold-eth打造以太坊DApp的终极指南

&#x1f680;本系列文章为个人学习笔记&#xff0c;目的是巩固知识并记录我的学习过程及理解。文笔和排版可能拙劣&#xff0c;望见谅。 目录 前言 一、快速部署 1、前期准备&#xff1a; 2、安装项目&#xff1a; ​ 二、配置部署运行环境 1、初始化本地链&#xff1a;…

VisualStudio环境搭建C++

Visual Studio环境搭建 说明 C程序编写中&#xff0c;经常需要链接头文件(.h/.hpp)和源文件(.c/.cpp)。这样的好处是&#xff1a;控制主文件的篇幅&#xff0c;让代码架构更加清晰。一般来说头文件里放的是类的申明&#xff0c;函数的申明&#xff0c;全局变量的定义等等。源…

【最新华为OD机试E卷-支持在线评测】机器人活动区域(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

移动UI:分类列表页、筛选页的设计揭秘。

移动UI的列表页设计需要考虑用户体验和界面美观性&#xff0c;以下是一些建议的设计要点&#xff1a; 1. 列表项的展示&#xff1a; 列表页应该清晰地展示各个列表项&#xff0c;包括标题、副标题、缩略图等内容&#xff0c;以便用户快速浏览和识别。可以使用卡片式布局或者简…