JavaScript中BOM操作【通俗易懂】

✨前言✨
  本篇文章主要在于了解JavaScript中BOM(即浏览器对象模型),以及对它的简单使用

🍒欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁
🍒博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言


📍文章目录📍

  • 一,BOM简介
  • 二,BOM是什么
  • 三,BOM核心有哪些
  • 三,可以实现哪些功能
    • 1,window 对象
    • 2, location 对象
    • 3,history 对象
    • 4, navigator
    • 5,screen

一,BOM简介

BOM(Browser Object Model),全称浏览器对象模型。 BOM 是使用 JavaScript 开发 Web 应用程序的核心。BOM 提供了与网页无关的浏览器功能对象,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象(例如screen对象、history对象等)都是该对象的子对象。

BOM 是在缺乏规范的背景下发展起来的,因此既充满乐趣又问题多多。毕竟,浏览器开发商都按照自己的意愿来为它添砖加瓦。最终,浏览器实现之间共通的部分成为了事实标准,为 Web 开发提供了浏览器间互操作的基础。HTML5 规范中有一部分涵盖了 BOM 的主要内容,因为 W3C 希望将JavaScript 在浏览器中最基础的部分标准化。


主要作用:

  • 弹出新浏览器窗口的能力;
  • 移动、关闭和更改浏览器窗口大小的能力;
  • 可提供WEB浏览器详细信息的导航对象;
  • 可提供浏览器载入页面详细信息的本地对象;
  • 可提供用户屏幕分辨率详细信息的屏幕对象;
  • 支持Cookies;


二,BOM是什么

首先,什么是BOM?BOM的解释是:

  • BOM即浏览器对象模型。
  • BOM提供了独立于内容 而与浏览器窗口进行交互的对象;
  • 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window;
  • BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性;
  • BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。

 使用BOM,开发者可以操控浏览器显示页面之外的部分。而它最独特的地方,就是问题最多的地方,激素它唯一一个没有相关标注的javascript实现。总体来说,BOM主要针对的是浏览器窗口和子窗口,但是通常会把任何特定于浏览器的扩展都归于在BOM的范畴内。下面是一些拓展:

1, 弹出新浏览器窗口的能力。
2, 移动、缩放和关闭浏览器窗口的详近信息。
3, navigator对象,提供关于浏览器的详尽信息。
4, location对象,提供浏览器加载页面的详尽信息。
5, screen对象,提供关于用户屏幕分辨率的详尽信息。
6, performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息。
7, 对cookie的支持。



三,BOM核心有哪些

在这里插入图片描述

BOM的组成,BOM中共有五大对象

  • Window:窗口对象
  • Navigator:浏览器对象
  • Screen:显示器屏幕对象
  • Histroy:历史记录对象
  • Location:地址栏对象


三,可以实现哪些功能

1,window 对象

BOM 的核心对象是 window,它表示浏览器的一个实例。

在浏览器中,window 对象有双重角色,它既是通过 JavaScript 访问浏览器窗口的一个接口,又是 ECMAScript 规定的 Global 对象。

所有在全局作用域中声明的变量、函数都会变成 window 对象的属性和方法。

其他的 4 个 BOM 对象也都是 window 的属性。

注意:
使用 window 对象的属性或方法的时候,通常可以省略 window。

属性

属性名属性含义
name获取/设置窗口的名称。
innerWidth获得浏览器窗口的内容区域的宽度。(只读)
innerHeight获得浏览器窗口的内容区域的高度。(只读)
document对当前窗口所包含文档对象的引用。(只读)
location获取、设置 location 对象, 或者当前的 URL。
history对 history 对象的引用。(只读)
navigator对 navigator 对象的引用。(只读)
screen对 screen 对象的引用。(只读)

方法

方法名方法含义
alert()显示带有一段消息和一个确认按钮的警告框。
confirm()显示带有一段消息以及确认按钮和取消按钮的对话框。
prompt()显示可提示用户输入的对话框。
open()打开一个新的浏览器窗口或查找一个已命名的窗口。window.open(strUrl, strWindowName, [strWindowFeatures]);
close()关闭浏览器窗口。只有open() 方法打开的窗口才可以用 close() 关闭。
print()打印当前窗口的内容。
scrollTo()滚动到文档中的某个坐标。
scrollBy()在窗口中按指定的偏移量滚动文档。
setTimeout()单次定时
clearTimeout()取消单次定时
setInterval()多次定时
clearInterval()取消多次定时

打开窗口

//新窗口打开页面
window.open('test.html');  

 //从指定名字的窗口打开页面 
window.open('http://www.atguigu.com', 'myWindowName')// 指定打开的窗口大小
window.open('http://www.atguigu.com', '', 'width=400,height=300');  

页面滚动

滚动到文档中的某个坐标:

window.scrollTo( 0, 1000 );
 
// 设置滚动行为改为平滑的滚动
window.scrollTo({ 
    top: 1000, 
    behavior: "smooth" 
});

在窗口中按指定的偏移量滚动文档:

// 向下滚动一页:
window.scrollBy(0, window.innerHeight);
 
// 向上滚动一页:
window.scrollBy(0, window.innerHeight);
 
// 平滑滚动
window.scrollBy({   
  top: 100,
  left: 100,   
  behavior: "smooth" 
});

定时器

① 单次定时器

设置定时:

// 第一个参数可以传递一个字符串,第二个参数是延迟时间
setTimeout("alert('Hello world!') ", 1000); 
 
// 第一个参数也可以传递一个回调函数,这是推荐的用法
setTimeout(function() { 
 alert("Hello world!"); 
}, 1000);
 
// 还可传递更多的参数作为回调函数的参数
setTimeout(myCallback, 500, 'Parameter 1', 'Parameter 2');

取消定时:

//设置超时调用
var timeoutId = setTimeout(function() { 
 alert("Hello world!"); 
}, 1000); 
//注意:把它取消
clearTimeout(timeoutId);

② 多次定时器

设置定时:

// 第一个参数可以传递一个字符串,第二个参数是延迟时间
setInterval ("alert('Hello world!') ", 10000); 
 
// 第一个参数也可以传递一个回调函数,这是推荐的用法
setInterval (function() { 
 alert("Hello world!"); 
}, 10000); 
IntervalExample01.htm
 
// 还可传递更多的参数作为回调函数的参数
setInterval(myCallback, 500, 'Parameter 1', 'Parameter 2');

取消定时:

//设置定时
var invalId = setInterval(function() { 
 alert("Hello world!"); 
}, 1000); 
//注意:把它取消
clearInterval(timeoutId);


2, location 对象

location 是最有用的 BOM 对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。location 对象的用处不只表现在它保存着当前文档的信息,还表现在它将 URL 解析为独立的片段,让开发人员可以通过不同的属性访问这些片段。

属性:

属性名属性含义
href返回当前加载页面的完整URL。直接输出 location 也会返回这个值。
protocol设置或返回页面使用的协议。通常是 http: 或 https:
host返回服务器名称和端口号(如果有)。
hostname返回不带端口号的服务器名称。
port返回URL中指定的端口号。
pathname返回URL中的目录和(或)文件名。
search返回URL的查询字符串。这个字符串以问号开头。
hash返回URL中的hash(#号后跟零或多个字符)。

方法:

方法名方法含义
reload()重新加载如果设置参数 true,表示强制从浏览器加载。
assign()打开新的页面。
replace()打开新的页面替换旧业面,不会产生历史记录。


3,history 对象

history 对象提供了操作浏览器会话历史(浏览器地址栏中访问的页面,以及当前页面中通过框架加载的页面)的接口。

属性:

属性名属性含义
length历史记录的数量

方法:

方法名方法含义
back()后退一步
forward()前进一步
go(n)前进或后台 n 步

//后退一步
history.go(-1); 
//前进一步
history.go(1); 
//前进两步
history.go(2);


4, navigator

最早由 Netscape Navigator 2.0 引入的 navigator 对象,现在已经成为识别客户端浏览器的事实标准。

属性名属性含义
userAgent用户代理信息,改属性可以用来检测用户所使用的浏览器。


5,screen

screen 对象返回当前渲染窗口中和屏幕有关的属性。

属性名属性含义
width返回屏幕宽度
height返回屏幕高度


✨最后✨

总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!
如有问题,欢迎评论区批评指正😁

在这里插入图片描述

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

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

相关文章

Unity | 渡鸦避难所-5 | 角色和摄像机之间的遮挡物半透明

1 前言 角色在地图上移动到岩石后面时,完全被岩石遮挡,玩家只能看到岩石。这逻辑看起来没问题,但并不是玩家想要看到的画面,玩家更希望关注角色的状态 为了避免角色被遮挡,可以使用 Cinemachine Collider 功能&#x…

‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。这个问题如何解决?

这个错误信息 vue-cli-service 不是内部或外部命令,也不是可运行的程序或批处理文件 表示 vue-cli-service 命令在你的系统上未被识别。这通常是因为 Vue CLI 没有被正确安装或其路径没有被加入到系统的环境变量中。以下是几个解决这个问题的步骤: 确认 …

二维码地址门牌系统物业采集端:打造智能化、便捷化的住户登记体验

文章目录 前言一、集成先进科技,提升登记效率二、简化登记流程三、实际效果与应用价值四、未来展望 前言 在科技不断进步的时代,追求智能化与便捷化的生活方式已成为人们的目标。二维码地址门牌系统物业采集端应运而生,为居民提供全新的登记…

怎样消除图片上的水印三招教你如何图片去水印

在数字的洪流中,图片已成为我们生活的一部分,仿佛绿洲之于沙漠。然而,有时这些图片会带上水印,如美玉上的瑕疵,既影响了视觉的美感,也可能阻碍了我们的使用。那么,如何揭去这层恼人的面纱呢&…

微服务-OpenFeign-工程案例

Ribbon 前置知识 是NetFlix的开源项目,主要来提供关于客户端的负载均衡能力。从多个服务提供方,选取一个节点发起调用。 Feign:NetFlix,SpringCloud 的第一代LB(负载均衡)客户端工具包。 OpenFeign:SpringCloud自研&#xff0c…

STM32G030F6P6读写flash失败问题(HAL)

STM32G030是F0系列的升级版,其在性能上比F0要好很多,具体G0参数如下: 最开始做项目选用的单片机是STM32F030F4P6,但是在后期使用中发现,我的FLASH(16K)不够用了,就选择了STM32G030F6…

基于YOLOv8深度学习的人脸面部表情识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

深入剖析ShardingSphere:探索其内核原理与核心源码,揭秘分库分表技术的奥秘

一、 内核剖析 ShardingSphere虽然有多个产品,但是他们的数据分片主要流程是完全一致的。 解析引擎 解析过程分为词法解析和语法解析。 词法解析器用于将SQL 拆解为不可再分的原 子符号,称为Token。 并根据不同数据库方言所提供的字典,将其…

掌握 Postman Newman:快速启动 API 测试自动化

Postman 中的 Newman 是什么? Newman 是一个 CLI(命令行界面)工具,用于运行 Postman 中的集合(Collection)和环境(Environment)来进行自动化测试。它允许直接从命令行运行 Postman …

解决VMware 虚拟机 ubuntu 20.04 异常关闭导致虚拟网卡 ens33 无法工作问题

问题描述 由于经常使用 SSH 远程链接 VMware 中的虚拟机 ubuntu,每次关闭都是挂起,时间久了,虚拟机运行有些卡顿了,此时可以通过 Linux 命令重启或者关闭 ubuntu,也可以之间使用 VMWare 中的【虚拟机】-- 【电源】-&g…

SpringCloudAlibaba之Nacos

1、简介 Nacos支持基于DNS和基于RPC的服务发现,服务端可以通过SDK或者Api进行服务注册,相应的服务消费者可以使用DNS或者Http查找的方式获取服务列表。Spring Cloud 服务注册中心的服务器很多,如 Zookeeper、Eureka、Consul 等。 Spring Clou…

CCNP课程实验-02-EIGRP_CFG

目录 实验条件网络拓朴需求: 基础配置需求实验1. R4/R5/R6通过二层交换机连接,按照实验拓扑图来宣告路由器接口到相应的EIGRP进程,没有具体说明的可任意宣告,要求关闭自动汇总。2. R2 --- R3上启用EIGRP认证(采用MD5进…

SM2——适用于前后端(java+vue)公用的SM2国密加解密传输

目录 一、SM2国密加解密算法1.1、pom文件引入依赖包1.2、SM2加解密工具类1.3、测试类 一、SM2国密加解密算法 1.1、pom文件引入依赖包 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk18on</artifactId><version>…

JMeter使用

目录 启动JMeter 创建线程组 设置线程参数 设置http请求参数 ​编辑 创建查看结果树(显示成功/失败多少以及返回结果等信息) 创建聚合报告(显示响应时间、吞吐量、异常数等信息) 点击上方的执行按钮即可开始压力测试 结果树显示 聚合报告结果显示 启动JMeter 在JMete…

产品经理学习-从0-1搭建策略产品

从0-1搭建策略产品 目录&#xff1a; 回顾策略产品 如何从0-1搭建策略产品 回顾策略产品 之前也了解过从产品实施的角度来看&#xff0c;策略就是针对问题的解决方案&#xff0c;在互联网时代更集中体现在2个维度&#xff1a;业务场景和数据应用 如何从0-1搭建策略产品 我们…

HTML5+CSS3④——选择器、复合选择器

目录 选择器 标签选择器 类选择器 id选择器 通配符选择器 复合选择器 后代选择器 子代选择器 并集选择器 交集选择器 选择器 标签选择器 类选择器 id选择器 通配符选择器 复合选择器 后代选择器 子代选择器 并集选择器 交集选择器

一文读懂OTA【赠书活动|第12期《一书读懂物联网:基础知识+运行机制+工程实现》】

2020年&#xff0c;特斯拉发布过一次OTA更新&#xff0c;车主可以通过这次系统更新获得座椅加热功能。当时&#xff0c;这则新闻震惊了车圈和所有车主&#xff0c;彼时的大家还没有把汽车当作可以“升级”的智能设备。 如今3年过去了&#xff0c;车主对各家车企的OTA升级早已见…

easyrecovery 2024最新免费密钥分享 实用数据恢复软件分享

在日常使用电脑时&#xff0c;我们经常会遇到误删文件的情况&#xff0c;若文件还未被彻底删除&#xff0c;我们还可以通过电脑中的回收站将其恢复&#xff0c;但若是回收站都被清空的话&#xff0c;想要恢复文件就变得比较困难了&#xff0c;而EasyRecovery可以很好的帮助我们…

关键字:new关键字

在 Java 中&#xff0c;new关键字用于创建对象实例。它是对象创建的语法糖&#xff0c;用于分配内存空间并调用构造函数来初始化对象。 以下是new关键字的基本语法&#xff1a; 在上述语法中&#xff0c;ObjectType是要创建对象的类名&#xff0c;objectName是对象的引用变量…

Stable Diffusion API入门:简明教程

Stable Diffusion 是一个先进的深度学习模型&#xff0c;用于创造和修改图像。这个模型能够基于文本描述来生成图像&#xff0c;让机器理解和实现用户的创意。使用这项技术的关键在于掌握其 API&#xff0c;通过编程来操控图像生成的过程。 在探索 Stable Diffusion API 的世界…