[JS]BOM操作

news2024/11/25 15:26:44

介绍

BOM(Browser Object Model)是浏览器对象模型

  1. window对象是一个全局对象, 也是JS中的顶级对象
  2. 通过var定义在全局作用域中的变量和函数都会变成window对象的属性和方法
  3. window对象下的属性和方法调用时一般省略window

间歇函数

定时器

定时器是间歇函数的一种, 可以每个每隔一段时间, 重复执行代码, 无需手动触发

// 1.匿名函数
setInterval(()=>{}, 1000)

// 2.函数名调用
function fn() {}
setInterval(fn, 1000) // 不带(),否则只调用一次

// 3.函数调用
function fn() {}
setInterval('fn()', 1000) // 不推荐

// 4.清理定时器
clearInterval(定时器id);

注意:

  1. 完整写法由window调用, 一般省略
  2. 延迟的毫秒数可以省略, 默认0
  3. 定时器创建后会返回 id, 用于清除定时器

延时器

延时器是间歇函数的一种, 可以延时指定时间, 然后执行代码

// 1.匿名函数
setTimeout(()=>{}, 1000)

// 2.函数名调用
function fn() {}
setTimeout(fn, 1000) // 不带(),否则只调用一次

// 3.函数调用
function fn() {}
setTimeout('fn()', 1000) // 不推荐

// 4.清理定时器
clearTimeout(延时器id);

JS执行机制

  1. JS语言的特点之一就是单线程, 同一时间只能处理一个任务
  2. 这是因为JS设计的使命就是处理网页中的用户交互以及DOM操作, 这就要求程序中所有的任务都必须是线性的, 前一个任务结束, 再执行后一个任务, 只有这样, 才能保证用户交互和DOM操作是有序的, 不然同一时间添加一个元素又删除这个元素, 程序就乱套了, 单线程正好符合这种设计要求
  3. 但是单线程也存在问题, 如果JS执行时间过长, 就会造成页面渲染的不连贯, 导致页面阻塞.
  4. 为了解决这个问题, HTML提出了Web Worker标准, 允许JS可以创建多个线程, 于是就有了同步和异步的概念,
  5. 同步任务就是放在主线程上, 立即执行的任务
  6. 异步任务就是交由宿主环境执行, 执行完成后推入任务队列排队的任务, JS的异步是通过回调函数实现的
  7. 为了保证同步任务和异步任务有序执行, 就有了事件循环的概念, 就是先执行主线程的同步任务, 等所有同步任务执行结束后, 再依次读取任务队列中的异步任务, 这种不断读取任务, 执行任务的机制, 称为事件循环
  8. JS虽然通过事件循环实现了异步编程, 但是本质还是单线程语言
  9. 异步任务也可以分两种, 一种是宿主环境执行的宏任务, 执行完毕后推入宏任务队列, 一种是JS引擎执行的微任务, 执行完毕后推入微任务队列, 主线程一旦闲置, 优先清空微任务执行, 再执行宏任务队列

location对象

location对象拆分并保存了URL地址的各个组成部分

  1. location.href 获取或设置整个URL
  2. location.host 返回域名
  3. location.port 返回端口号
  4. location.pathname 返回路径
  5. location.search 返回 ? 后面的查询参数
  6. location.hash 返回 # 后面的内容, 常用于锚点链接
  7. location.assign(); 可以跳转页面,有后退功能
  8. location.replace(); 替换当前页面,不能后退
  9. location.reload(); 刷新当前页面, 如果传入true表示强制刷新(Ctrl + F5)

navigator对象

navigator对象记录了浏览器相关的信息, 较常用的是userAgent属性, 可以返回浏览器版本和平台信息

<script>
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 = "";  //电脑
} 
</script>

histroy对象

history对象可以与浏览器记录进行交互.

  1. history.back(); 后退页面
  2. history.forward(); 前进功能
  3. history.go(参数); 参数1前进页面, 参数-1后退页面

本地存储

把数据存储在用户硬盘中, 由浏览器进行管理, 实现数据持久化存储

sessionStorage
// 储存数据
sessionStorage.setItem('key',value);
// 获取数据
sessionStorage.getItem('key');
// 删除数据
sessionStorage.removeItem('key');
// 删除所有数据
sessionStorage.clear();
  1. 生命周期为关闭浏览器窗口;
  2. 在同一个窗口下数据可以共享
  3. 容量限制大约5M
localStorage
// 储存数据
localStorage.setItem('key',value);
// 获取数据
localStorage.getItem('key');
// 删除数据
localStorage.removeItem('key');
// 删除所有数据
localStorage.clear();
  1. 生命周期为永久,除非手动删除;
  2. 在不同窗口下数据也可以共享(同一浏览器都可以);
  3. 容量限制大约20M
查看本地存储数据

存储复杂数据

本地存储里面只能存储字符串的数据格式, 如需需要储存复杂数据, 就需要使用JSON对象

JSON对象就是 属性 和 值 都由双引号包裹的数据结构

// 序列化
// 把复杂数据转换成JSON字符串
JSON.stringify(数据)

// 反序列化
// 把JSON字符串还原成对象格式 
JSON.parse(数据)

窗口操作

//1.打开空窗口
window.open();   

//2.打开窗口
// url文件路径
// name新窗口的名称
// features窗口属性,大小等信息
// 会返回刚刚创建的窗口,用于关闭
window.open(url,[name],[features]);


//3.关闭窗口
window.close();    

//3.关闭刚刚创建的窗口
newWin.close();   

//4.把当前窗口关闭
window.close();    

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

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

相关文章

java基于ssm+jsp 高校信息资源共享平台

1前台首页功能模块 高校信息资源共享平台&#xff0c;在系统首页可以查看首页、课程信息、教学资源、新闻资讯、我的、跳转到后台等内容&#xff0c;如图1所示。 图1前台首页功能界面图 学生信息登录、学生信息注册&#xff0c;在注册页面可以填写账号、姓名、手机、邮箱、身…

C#基于SkiaSharp实现印章管理(3)

本系列第一篇文章中创建的基本框架限定了印章形状为矩形&#xff0c;但常用的印章有方形、圆形等多种形状&#xff0c;本文调整程序以支持定义并显示矩形、圆角矩形、圆形、椭圆等4种形式的印章背景形状。   定义印章背景形状枚举类型&#xff0c;矩形、圆形、椭圆相关的尺寸…

【人工智能】—葡萄牙酒店预订信息多维度分析|预测是否取消预定算法模型大乱斗

引言 在当今数字化时代&#xff0c;数据驱动的决策在各个行业中变得越来越重要。酒店业&#xff0c;作为旅游和休闲服务的核心部分&#xff0c;正面临前所未有的机遇和挑战。随着在线预订平台的兴起&#xff0c;客户行为数据的积累为酒店提供了洞察消费者需求和优化运营策略的…

存储管理(三):分区表

什么是分区表 假设存在表t&#xff1a; CREATETABLE t (ftimedatetime NOT NULL,c int(11) DEFAULT NULL,KEY (ftime) )ENGINEInnoDB DEFAULT CHARSETlatin1 PARTITION BY RANGE (YEAR(ftime)) (PARTITION p_2017 VALUES LESS THAN (2017) ENGINE InnoDB,PARTITION p_2018 VA…

【Python】已解决:ModuleNotFoundError: No module named ‘sklearn‘

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘sklearn‘ 一、分析问题背景 在进行机器学习项目时&#xff0c;Scikit-Learn&#xff08;简称sklearn&#xff09;是一…

MySQL的limit关键字和聚合函数讲解

目录 一、MySQL数据库介绍二、MySQL聚合函数三、MySQL数据排序分组四、MySQL的limit关键字 一、MySQL数据库介绍 MySQL是一种广泛使用的开源关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;后被Sun Microsystems收购&#xff0c;最终成为Oracle公司的一部…

Consul入门笔记

简介 Consul&#xff0c;HashiCorp公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案&#xff0c;Consul的方案更一站式&#xff0c;内置服务注册与发现框架、分布一致性协议实现、健康检查、K/V存储、多数据中心方案&…

地图初始化-多视图几何基础

在ORB-SLAM2中初始化和使用的传感器类型有关&#xff0c;其中单目相机模式初始化相对复杂&#xff0c;需要运行一段时间才能成功初始化。而双目相机、 RGB-D相机模式下比较简单&#xff0c;一般从第一帧开始就可以完成初始化。 为什么不同传感器类型初始化差别这么大呢&#x…

springboot宠物医院管理系统-计算机毕业设计源码07221

目 录 1 绪论 1.1 选题背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 宠物医院管理系统系统分析 2.1 可行性分析 2.1.1技术可行性分析 2.1.2 操作可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

metasfresh开源ERP系统Windows开发环境配置参考

目录 概述 开发环境 配置过程 后端启动 前端启动 登陆系统 其他 概述 Compiere闭源之后衍生出了Admpiere等若干开源的产品&#xff0c;metasfresh就是其中之一&#xff0c;metasfresh截至发稿时在GitHub上已有64000多次的修改提交&#xff0c;而且仍在维护中&#xff0…

vue3-cropperjs图片裁剪工具-用户上传图片截取-(含预览视频)

效果图 上传图片弹窗预览 对于这个上传图片样式可以参考 官方原代码 官网传送入口 Upload 上传 | Element Plus (element-plus.org) <template><el-uploadclass"upload-demo"dragaction"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6…

使用label-studio对OCR数据进行预标注

导读 label-studio作为一款数据标注工具相信大家都不陌生&#xff0c;对于需要进行web数据标注协同来说应该是必备工具了&#xff0c;标注的数据类型很全涉及AI的各个任务(图像、语音、NLP、视频等)&#xff0c;还支持自定义涉及模版。 然而&#xff0c;我们在标注数据的过程…

【简单讲解下Fine-tuning BERT,什么是Fine-tuning BERT?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

<Python><ffmpeg>基于python使用PyQt5构建GUI实例:音频格式转换程序(MP3/aac/wma/flac)(优化版2)

前言 本文是基于python语言使用pyqt5来构建的GUI,功能是使用ffmpeg来对音频文件进行格式转换,如mp3、aac、wma、flac等音乐格式。 UI示例: 环境配置 系统:windows 平台:visual studio code 语言:python 库:pyqt5、ffmpeg 概述 本文是建立在之前的博文的基础上的优化版…

Linux多进程和多线程(二)-进程间通信-管道用法

进程间通信 关于多进程的通信管道无名管道(匿名管道)创建无名管道示例:创建子进程,父进程通过管道向子进程发送消息无名管道(匿名管道) 的特点 有名管道(命名管道) 创建有名管道需要调⽤ mkfifo() 函数示例:创建两个没有关联关系的进程,通过有名管道通信 注意: 缺点优点 关于判…

烧结刚玉砂轮片 磨具用晶谷低温陶瓷结合剂玻璃粉

晶谷CBN 砂轮磨具用低温陶瓷结合剂玻璃粉的一些特点如下&#xff1a; - 软化点&#xff1a;通常为450~650度&#xff1b; - 膨胀系数&#xff1a;50~12010-7&#xff1b; - 粒径&#xff1a;300~3000目&#xff08;可按要求订做&#xff09;&#xff1b; - 外观颜色&#xff…

6. 较全的Open3D点云数据处理(python)

注意&#xff1a;以下内容来自博客爆肝5万字❤️Open3D 点云数据处理基础&#xff08;Python版&#xff09;_python 点云 焊缝-CSDN博客&#xff0c;这篇博客写的全且详细&#xff0c;在这里是为了记笔记方便查看&#xff0c;并非抄袭。 1.点云的读写 代码如下&#xff1a; …

使用Perplexity打造产品的27种方式

ChatGPT和Perplexity等聊天机器人正迅速成为产品经理的首选助手。以下是一份全面的指南&#xff0c;介绍PM如何在日常工作中使用Perplexity&#xff0c;该指南基于300多份回复和30次电话后的总结。 理解并制定增长战略&#xff1a;例如&#xff0c;解释增长会计的基本原理&…

什么是 Elasticsearch 数据预热?

引言&#xff1a;在现代的信息检索和数据分析领域&#xff0c;Elasticsearch 已经成为一个广泛应用的分布式搜索和分析引擎。作为开源项目的一部分&#xff0c;Elasticsearch 提供了强大的实时搜索和分析能力&#xff0c;使得处理大规模数据变得更加高效和可靠。然而&#xff0…

MySQL高级-MVCC-undo log 版本链

文章目录 1、undo log2、undo log 版本链2.1、然后&#xff0c;有四个并发事务同时在访问这张表。2.1.1、修改id为30记录&#xff0c;age改为32.1.2、修改id为30记录&#xff0c;name改为A32.1.3、修改id为30记录&#xff0c;age改为10 2.2、总结 1、undo log 回滚日志&#xf…