当前位置: 首页 > news >正文

JavaScript 浏览器对象模型 BOM

浏览器对象模型(Browser Object Model,BOM)是指一组与浏览器进行交互的 JavaScript 对象。它允许 JavaScript 与浏览器的组件进行交互,比如窗口、文档、历史记录等。BOM 不同于 DOM(文档对象模型),后者专注于处理 HTML 和 XML 文档的结构和内容。下面是五个主要对象:

  • window 对象:表示浏览器的一个窗口,是 JavaScript 在浏览器环境中的全局对象。这意味着在全局作用域中定义的变量和函数实际上都是 window 对象的属性和方法。
  • location 对象:用于获取或改变当前文档的 URL,允许页面重定向;
  • navigator 对象:提供了关于浏览器的一些信息,包括用户代理信息、浏览器版本、用户的语言设置等。
  • screen 对象:提供了有关用户屏幕的信息,比如屏幕宽度、高度;
  • history 对象:用于访问浏览器的历史记录,可以用于前进、后退操作

window 对象

window 对象是 BOM 的核心,表示浏览器窗口或标签页。window 对象提供了一系列属性和方法:

window 对象属性

  • document:对 Document 对象的只读引用,用于访问页面的内容。
  • history:对 History 对象的只读引用,用于管理浏览历史。
  • innerHeight:返回窗口的文档显示区的高度(以像素为单位)。
  • innerWidth:返回窗口的文档显示区的宽度(以像素为单位)。
  • location:用于获取或设置窗口的 URL。
  • name:设置或返回窗口的名称。
  • outerHeight:设置或返回窗口的外部高度(包括工具栏和滚动条等界面元素)。
  • outerWidth:设置或返回窗口的外部宽度(包括工具栏和滚动条等界面元素)。
  • screenX:返回窗口在屏幕上的水平坐标。
  • screenY:返回窗口在屏幕上的垂直坐标。
  • navigator:包含大量有关 Web 浏览器的信息,用于检测浏览器及操作系统。

window 方法

  • alert(message):显示一个带有指定消息和一个确定按钮的对话框。
  • confirm(message):显示一个带有指定消息以及确定和取消按钮的对话框,并返回一个布尔值。
  • prompt(message, defaultValue):显示一个带有指定消息、一个文本输入字段以及确定和取消按钮的对话框,并返回用户输入的文本(如果用户点击取消按钮,则返回 null)。
  • open(url, windowName[, windowFeatures]):打开一个新的浏览器窗口或标签页,并返回一个新的 Window 对象。
  • close():关闭当前窗口。
  • setTimeout(function, delay):在指定的延迟(以毫秒为单位)后调用一个函数或计算一个表达式。
  • setInterval(function, delay):按照指定的周期(以毫秒为单位)调用一个函数或计算一个表达式。

location 对象

Location 对象是浏览器的一个重要组成部分,它提供了关于当前文档的 URL 的信息并允许你进行 URL 的操作。

Location 对象属性

例子:https://www.csdn.net:8080/cdn/about.html?name=simahe#goods,属性可以取值,也可以设置值。

属性名例子描述
hrefhttps://www.csdn.net:8080/cdn/about.html?name=simahe#goods完整的 URL
protocolhttps页面使用的协议。 http 或 https
hostwww.csdn.net:8080域名+端口号(如果有)
hostnamewww.csdn.net不带端口的域名
port8080端口号,没有返回空字符串
pathnamecdnURL 的目录或文件名
search?name=simaheURL 查询字符串,“?”开头
hash#goods返回 URL 中的 hash,没有返回空字符串

Location 对象的方法

  • assign(url):加载新的文档,window.location.assign("csdn.com");
  • replace(url):替换当前文档,window.location.replace("csdn.com");
  • reload():重新加载当前文档,window.location.reload();

navigator 对象

navigator 对象提供了有关浏览器的信息。

navigator 对象属性

  • navigator.userAgent:可以用来检查浏览器类型,手机号类型。
  • navigator.language:获取浏览器语言,然后设置网站的语言,提升用户体验。
  • navigator.onLine:检查用户当前是否处于联网状态。
  • navigator.geolocation:获取地理位置信息
function getMobileModel() {var userAgent = navigator.userAgent || navigator.vendor || window.opera;var mobileModel = "未知手机型号";if (/iPhone/i.test(userAgent)) {} else if (/Android/i.test(userAgent)) {mobileModel = "Android设备";}return mobileModel;
}console.log(getMobileModel());

screen 对象

Screen 对象是浏览器的一个组成部分,用于提供有关用户屏幕的详细信息,如屏幕尺寸、颜色深度、分辨率等。这些信息可以帮助开发者获取有关用户环境的上下文,以优化布局和响应式设计。

screen 对象属性

  • screen.width:返回屏幕的宽度(单位:像素),包括任务栏或浏览器边框等。
  • screen.height:返回屏幕的高度(单位:像素),包括任务栏或浏览器边框等。
  • screen.availWidth:返回屏幕可用宽度,即除去任务栏或浏览器边框等后的宽度(单位:像素)。这个属性对于确定网页内容的最佳布局宽度非常有用。
  • screen.availHeight:返回屏幕可用高度,即除去任务栏或浏览器边框等后的高度(单位:像素)。这个属性可以帮助开发者确保网页内容在用户的屏幕上可见。
  • screen.colorDepth:返回显示屏幕的颜色分辨率(像素:比特)。这个属性可以帮助开发者了解用户设备的颜色显示能力,从而选择适当的图像和颜色方案。
  • screen.pixelDepth:返回目标设备或缓冲器上的调色板的比特深度,通常与 screen.colorDepth 相同。
  • screen.deviceXDPIscreen.deviceYDPI:分别返回显示屏幕的每英寸水平点数和每英寸垂直点数。这些属性对于了解用户设备的屏幕密度和物理尺寸非常有用。

screen 使用场景

  • 响应式设计
  • 设备适配和用户体验优化
// 使用 Screen 对象实现响应式设计
function adjustLayout() {if (screen.availWidth < 768) {document.body.style.backgroundColor = "lightblue";} else {document.body.style.backgroundColor = "white";}
}// 监听页面加载和窗口大小变化
window.onload = adjustLayout;
window.onresize = adjustLayout;if (screen.colorDepth > 24) {// 使用更高质量的图像
} else {// 使用低质量或优化过的图像
}

history 对象

history 对象保存着用户上网的历史记录,从窗口打开的那一刻算起。处于安全考虑,开发人员无法得知用户浏览过的 URL。

history 对象属性

  • history.length:返返回历史记录中条目的数量,包括当前页面。即用户访问的总页面数。
  • history.scrollRestoration滚动恢复属性允许 web 应用程序在历史导航上显式地设置默认滚动恢复行为
  • history.state:返回当前页面的 state 对象。这个属性在 HTML5 中引入,用于存储与当前历史记录条目相关联的状态对象。

history 主要方法

  • back():会在会话历史记录中向后移动一页。如果没有上一页,则此方法调用不执行任何操作。
  • forward():会话历史中向前移动一页。
  • go(delta):从会话历史记录中加载特定页面。你可以使用它在历史记录中前后移动,具体取决于 delta 参数的值。
  • pushState():向浏览器的会话历史栈增加了一个条目。
  • replaceState():用于更新会话历史栈条目。与 pushState()类似,但它不会新建一个,而是替换当前的。

history 使用场景

  • 导航控制
  • 状态管理
  • 单页应用(SPA):Vue-router 的 history 模式

history.go(-1) //-1,1,2
history.back()
history.forward()
if(history.length==0){//用户打开的第一个页面
}history.pushState({ key: 'value' }, '', '/new-url');

总结

BOM 提供了与浏览器交互的基础设施,允许开发者获取当前窗口、文档、历史、导航和屏幕的信息及功能。这些功能使得我们能够创建丰富的用户体验和交互。

相关文章:

JavaScript 浏览器对象模型 BOM

浏览器对象模型&#xff08;Browser Object Model&#xff0c;BOM&#xff09;是指一组与浏览器进行交互的 JavaScript 对象。它允许 JavaScript 与浏览器的组件进行交互&#xff0c;比如窗口、文档、历史记录等。BOM 不同于 DOM&#xff08;文档对象模型&#xff09;&#xff…...

基于MATLAB的激光雷达与相机联合标定原理及实现方法——以标定板为例

1.为什么要进行激光雷达和相机的联合标定&#xff1f; 激光雷达和相机的联合标定是为了将两种传感器的数据统一到同一坐标系中&#xff0c;从而实现更准确的环境感知。激光雷达提供精准的三维距离信息&#xff0c;而相机捕捉丰富的纹理和颜色&#xff0c;通过联合标定可以结合两…...

React(一)

文章目录 项目地址一、创建第一个react项目二、JSX语法2.1 生成列表2.2 大括号识别JS的表达式2.3 列表循环array2.4 条件判断以及假值显示2.5 复杂条件渲染2.6 事件处理2.7 添加CSS样式2.8 添加图片2.9 使用Fregments返回多个根标签2.10多条件渲染2.11 导出子组件2.12 给子组件…...

Liunx-Ubuntu22.04.1系统下配置Anaconda+pycharm+pytorch-gpu环境配置

这里写自定义目录标题 Liunx-Ubuntu22.04.1系统下配置Anacondapycharmpytorch-gpu环境配置一、Anaconda3配置1.Anaconda安装2.Anaconda更新3.Anaconda删除 二、pycharm配置1.pycharm安装 三、pytorch配置 Liunx-Ubuntu22.04.1系统下配置Anacondapycharmpytorch-gpu环境配置 一…...

Postman之数据提取

Postman之数据提取 1. 提取请求头\request中的数据2. 提取响应消息\response中的数据3. 通过正在表达式提取4. 提取cookies数据 本文主要讲解利用pm对象对数据进行提取操作&#xff0c;虽然postman工具的页面上也提供了一部分的例子&#xff0c;但是实际使用时不是很全面&#…...

selenium元素定位校验以及遇到的元素操作问题记录

页面元素定位方法及校验 使用比较多的是通过id、class和xpath来对元素进行定位。在定位前可以现在浏览器验证是否可以找到指定的元素。这样就不用每添加一个元素定位都运行代码来检查定位方式表达式是否正确。 使用XPATH定位 在浏览器F12&#xff0c;找到元素&#xff0c;在元…...

在AndroidStudio中新建项目时遇到的Gradle下载慢问题,配置错的按我的来,镜像地址不知道哪个网页找的,最主要下载要快

android-studio-2024.2.1.11-windows Android 移动应用开发者工具 – Android 开发者 | Android Developers https://r4---sn-j5o76n7z.gvt1-cn.com/edgedl/android/studio/install/2024.2.1.11/android-studio-2024.2.1.11-windows.exe?cms_redirectyes&met1731775…...

用mv命令替换rm命令

# 用mv命令替换rm命令 主要内容来源自以上博文 rm命令穷凶极恶&#xff0c;以下为替换命令的方式&#xff0c;必做 步骤 修改vim ~/.bashrc加入以下代码 mkdir -p ~/.trash #在家目录下创建一个.trash文件夹(隐藏文件&#xff0c;ls -a 查看) alias rmdel #使用别名…...

电解车间铜业机器人剥片技术是现代铜冶炼过程中自动化和智能化的重要体现

电解车间铜业机器人剥片技术是现代铜冶炼过程中自动化和智能化的重要体现 电解车间铜业机器人剥片技术是现代铜冶炼过程中自动化和智能化的重要体现&#xff0c;它主要应用于铜电解精炼的最后阶段&#xff0c;即从阴极板上剥离出纯铜的过程。以下是该技术的几个关键点&#xff…...

【qt】控件2

1.frameGeometry和Geometry区别 frameGeometry是开始从红圈开始算&#xff0c;Geometry从黑圈算 程序证明&#xff1a;使用一个按键&#xff0c;当按键按下,qdebug打印各自左上角的坐标&#xff08;相当于屏幕左上角&#xff09;&#xff0c;以及窗口大小 Widget::Widget(QWid…...

Frida反调试对抗系列(四)百度加固

本文只是交流技术&#xff0c;如有侵权请联系我删除。 知识星球&#xff1a;https://t.zsxq.com/kNlj4 前言&#xff1a; 上一篇文章我们提到 我们使用github开源魔改好的frida server 但是仍然有一些厂商的server不能通过&#xff0c;那么这篇文章针对百度加固 进行快速通…...

Redis 安全

Redis 安全 Redis是一个开源的&#xff0c;高性能的键值存储系统&#xff0c;它通常被用作数据库&#xff0c;缓存和消息代理。由于其高性能和简单的API&#xff0c;Redis在全球范围内被广泛使用。然而&#xff0c;与其他数据库系统一样&#xff0c;Redis的安全性也是至关重要…...

上交大与上海人工智能研究所联合推出医学多语言模型,模型数据代码开源

今天为大家介绍的是来自上海交通大学的王延峰与谢伟迪团队的一篇论文。开源的多语言医学语言模型的发展可以惠及来自不同地区、语言多样化的广泛受众。 来源丨 DrugAI、 机器人的脑电波 论文&#xff1a;https://www.nature.com/articles/s41467-024-52417-z MMedC&#xff1…...

网络安全:我们的安全防线

在数字化时代&#xff0c;网络安全已成为国家安全、经济发展和社会稳定的重要组成部分。网络安全不仅仅是技术问题&#xff0c;更是一个涉及政治、经济、文化、社会等多个层面的综合性问题。从宏观到微观&#xff0c;网络安全的重要性不言而喻。 宏观层面&#xff1a;国家安全与…...

理解 Python 中的 __getitem__ 方法:在自定义类中启用索引和切片操作

理解 Python 中的 __getitem__ 方法&#xff1a;在自定义类中启用索引和切片操作 在Python中&#xff0c;__getitem__是一个特殊方法&#xff0c;属于数据模型方法之一&#xff0c;它使得Python对象能够支持下标访问和切片操作。这个方法提供了一种机制&#xff0c;允许类的实…...

【数据结构】【线性表】【练习】反转链表

申明 该题源自力扣题库19&#xff0c;文章内容&#xff08;代码&#xff0c;图表等&#xff09;均原创&#xff0c;侵删&#xff01; 题目 给你单链表的头指针head以及两个整数left和right&#xff0c;其中left<right&#xff0c;请你反转从位置left到right的链表节点&…...

vue2+3 —— Day5/6

自定义指令 自定义指令 需求&#xff1a;当页面加载时&#xff0c;让元素获取焦点&#xff08;一进页面&#xff0c;输入框就获取焦点&#xff09; 常规操作&#xff1a;操作dom “dom元素.focus()” 获取dom元素还要用ref 和 $refs <input ref"inp" type&quo…...

汽车资讯新视角:Spring Boot技术革新

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

关于win11电脑连接wifi的同时,开启热点供其它设备连接

背景&#xff1a; 我想要捕获手机流量&#xff0c;需要让手机连接上电脑的热点。那么问题来了&#xff0c;我是笔记本电脑&#xff0c;只能连接wifi上网&#xff0c;此时我的笔记本电脑还能开启热点供手机连接吗&#xff1f;可以。 上述内容&#xff0c;涉及到3台设备&#x…...

【Apache Paimon】-- 2 -- 核心特性 (0.9.0)

目录 1、实时更新 1.1、实时大批量更新 1.2、支持定义合并引擎 1.3、支持定义更新日志生成器 2、海量数据追加处理 2.1、append table 2.2、快速查询 3、数据湖功能&#xff08;类比&#xff1a;hudi、iceberg、delta&#xff09; 3.1、支持 ACID 事务 3.2、支持 Time…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...