[JS]BOM操作

介绍

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();    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《昇思25天学习打卡营第2天 | 昇思MindSpore张量 Tensor》

第二天学习 1.今天学习了张量 Tensor&#xff0c;了解到Tensor是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数&#xff0c;也是一个特殊的数据结构&#xff0c;与数组和矩阵非常相似。是MindSpore网络运算中的基本数据结构。学些了张量和稀疏张量的属性…

Node版本管理工具 fnm 安装使用

fnm 是一个基于 Rust 开发的 Node 版本管理工具&#xff0c;它的目标是提供一个快速、简单且可靠的方式来管理 Node.js 的不同版本。同时&#xff0c;它是跨平台的&#xff0c;支持 macOS、Linux、Windows。&#x1f680; Fast and simple Node.js version manager, built in R…

五十九周:文献阅读+FiLM

目录 摘要 Abstract 文献阅读&#xff1a;用于长时间序列预测的频率改进的勒让德记忆模型 一、现有问题 二、提出方法 三、相关知识 1、Legendre Projection&#xff08;Legendre投影&#xff09; 2、Fourier Transform&#xff08;傅立叶变换&#xff09; 四、提出的…

文件操作与管理

程序经常需要访问文件和目录&#xff0c;读取文件信息或写入文件信息&#xff0c;在Python语言中对文件的读写是通过文件对象&#xff08;file object&#xff09;实现的。Python的文件对象也称为类似文件对象或流&#xff08;stream&#xff09;&#xff0c;因为Python提供一种…

数据库-数据完整性-用户自定义完整性实验

NULL/NOT NULL 约束&#xff1a; 在每个字段后面可以加上 NULL 修饰符来指定该字段是否可以为空&#xff1b;或者加上 NOT NULL 修饰符来指定该字段必须填上数据。 DEFAULT约束说明 DEFAULT 约束用于向列中插入默认值。如果列中没有规定其他的值&#xff0c;那么会将默认值添加…

ProPainter – AI视频去水印工具,可以去除视频中的静态水印、动态物体/人物等 本地一键整合包下载

ProPainter是一个基于E2FGVI实现的AI视频编辑工具&#xff0c;它可以一键移除视频内的移动物体和水印。这个开源项目提供了一个简单而强大的解决方案&#xff0c;帮助用户轻松编辑和改善视频内容。 项目地址&#xff1a;https://github.com/sczhou/ProPainter 一键包下载&…

【C++初阶 ---- string类】文档介绍 | 容量操作 | 模拟实现

string介绍 前言1. C语言中的字符串2. 标准库中的string类2.1string类对象的容量操作2.2string类对象的访问及遍历操作访问操作 [ ]和at string底层模拟实现 前言 其实 string 就是一个管理字符数组的顺序表&#xff0c;因为字符数组的使用广泛&#xff0c;C 就专门给了一个 s…

mac系统docker默认不支持host主机网络模式

环境描述&#xff1a;在mac系统上安装docker及docker-compose服务&#xff0c;并且打算搭建一个redis集群 问题描述&#xff1a;mac默认不支持host网络模式&#xff0c;导致集群无法通过外部主机访问 具体验证步骤&#xff1a; docker-compose.yml如下&#xff1a; version…

山东省著名烈士孙善师孙善帅故居布展喜添新篇

人海信息网山东讯&#xff08;张春兄、冯爱云&#xff09; “……他们以钢铁般的意志&#xff0c;坚守共产党员的使命&#xff0c;他们就是泺口九烈士的孙善师孙善帅兄弟&#xff01;”6月28日&#xff0c;对于山东省著名烈士孙善师孙善帅故居来说&#xff0c;又是一个不平凡的…

二、安装虚拟机

本篇来源&#xff1a;山海同行 本篇地址&#xff1a;https://shanhaigo.cn/courseDetail/1805875642621952000 本篇资源&#xff1a;以整理到-山海同行 一、官网下载centos7 1. 进入CentOS 官方网站 官方网站&#xff1a;https://www.centos.org/download/ 2. 选择iso 点击下…

基于Delphi编写PC上位机串口通信工具

1&#xff09;Delphi入门级小知识&#xff0c;分享给将要学习或者正在学习Delphi上位机开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 Delphi&#xff0c;是Windows平台下著名的快速应用程…

python(基础语法,pandas,numpy,正则表达式,数据预处理)

python学习推荐网址&#xff1a; 白月黑羽 一、语法基础 目标&#xff1a; • list、tuple、set、dict的基本用法 • 内置函数 len&#xff08;&#xff09;&#xff0c; eval&#xff08;&#xff09;&#xff0c;range&#xff08;&#xff09;&#xff0c;sort&#xff08;…

weiyang**4.合约

通过合约开发&#xff0c;合约编译&#xff0c;SDK配置与业务开发构建了一个基于FISCO BCOS联盟区块链的应用。 官网&#xff1a;开发第一个区块链应用 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) CSDN&#xff1a;FISCO BCOS开发第一个区块链…

教师资格证(教资)笔试如何备考?含备考资料

教师资格证&#xff08;教资&#xff09;笔试如何备考&#xff1f;含备考资料 前言 教师&#xff0c;一直以来的热门职业&#xff0c;而要成为一名教师&#xff0c;考取教师资格证则是基本条件&#xff0c;那么教资笔试如何备考呢&#xff1f;&#xff0c;这里准备笔试备考攻…

基于单片机光纤测距系统的设计与实现

摘要 &#xff1a; 光纤由于其频带宽 、 损耗低及抗干扰能力强等优点已被广泛地应用在通信 、 电子及电力方面 &#xff0c; 是我们生产生活中必不可少的媒介。 在实际的光纤实验 、 安装 、 运营和维护工作中 &#xff0c; 一种精准 、 轻便和易操作的光纤测距系统显得尤为重…

PingCastle 3.2.0.1 - Active Directory 安全检测和评估

PingCastle 3.2.0.1 - Active Directory 安全检测和评估 活动目录域安全分析工具 请访问原文链接&#xff1a;https://sysin.org/blog/pingcastle/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 在 20% 的时间内获得 80% 的…

LitelDE安装---附带每一步截图以及测试

LiteIDE LiteIDE 是一款专为Go语言开发而设计的开源、跨平台、轻量级集成开发环境&#xff08;IDE&#xff09;&#xff0c;基于 Qt 开发&#xff08;一个跨平台的 C 框架&#xff09;&#xff0c;支持 Windows、Linux 和 Mac OS X 平台。LiteIDE 的第一个版本发布于 2011 年 …

[小试牛刀-习题练]《计算机组成原理》之数据信息的表示、运算方法与运算器

【数据信息的表示运算方法与运算器】 1、【机器码转换】X-0.11111111&#xff0c;X的补码是 1.00000001 。 最高位符号位为负值&#xff1a; 反码法——绝对值按位取反末位加一&#xff0c;1.000000000.000000011.00000001扫描法——从右往左找到第一个为1的&#xff…

SpringBoot的自动配置核心原理及拓展点

Spring Boot 的核心原理几个关键点 约定优于配置&#xff1a; Spring Boot 遵循约定优于配置的理念&#xff0c;通过预定义的约定&#xff0c;大大简化了 Spring 应用程序的配置和部署。例如&#xff0c;它自动配置了许多常见的开发任务&#xff08;如数据库连接、Web 服务器配…

PHP校园论坛-计算机毕业设计源码08586

摘 要 本项目旨在基于PHP技术设计与实现一个校园论坛系统&#xff0c;以提供一个功能丰富、用户友好的交流平台。该论坛系统将包括用户注册与登录、帖子发布与回复、个人信息管理等基本功能&#xff0c;并结合社交化特点&#xff0c;增强用户之间的互动性。通过利用PHP语言及其…