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

BOM常见操作方法汇总

BOM(Browser Object Model,浏览器对象模型)提供了与浏览器窗口交互的方法和属性。BOM 包括了许多对象,如 windowlocationhistorynavigator 等,这些对象提供了与浏览器窗口相关的各种功能。

以下是一些常见的 BOM 操作:

1. window 对象

window 对象是最顶层的对象,几乎所有的 BOM 操作都与其相关。

1.1 获取窗口尺寸
  • window.innerWidthwindow.innerHeight:获取窗口的内部宽度和高度(不包括滚动条等)。

    console.log(window.innerWidth, window.innerHeight);
    
  • screen.widthscreen.height:获取屏幕的宽度和高度。

    console.log(screen.width, screen.height);
    
1.2 设置窗口大小
  • window.resizeBy(width, height):调整窗口大小。

    window.resizeBy(200, 100);
    
  • window.resizeTo(width, height):将窗口大小设置为指定的宽度和高度。

    window.resizeTo(800, 600);
    
1.3 移动窗口
  • window.moveTo(xpos, ypos):移动窗口到指定的位置。

    window.moveTo(100, 100);
    
  • window.moveBy(xpos, ypos):相对于当前位置移动窗口。

    window.moveBy(50, 50);
    

2. location 对象

location 对象提供了与当前页面 URL 相关的方法和属性。

2.1 获取和设置 URL
  • location.href:获取当前页面的完整 URL。

    console.log(location.href);
    
  • 设置 URL:导航到新的 URL。

    location.href = 'https://example.com';
    
2.2 重定向
  • location.replace(url):替换当前页面的历史记录,并导航到新的 URL。

    location.replace('https://example.com');
    
  • location.reload():重新加载当前页面。

    location.reload();
    location.reload(true); // 默认false,传true强制刷新当前页面
    
2.3 获取 URL 组件
  • location.protocol:获取协议部分。

    console.log(location.protocol); // 输出: "http:"
    
  • location.host:获取主机部分(包括端口号)。

    console.log(location.host); // 输出: "www.example.com:80"
    
  • location.hostname:获取主机名部分。

    console.log(location.hostname); // 输出: "www.example.com"
    
  • location.port:获取端口号。

    console.log(location.port); // 输出: "80"
    
  • location.pathname:获取路径部分。

    console.log(location.pathname); // 输出: "/path/to/page.html"
    
  • location.search:获取查询字符串部分。

    console.log(location.search); // 输出: "?query=value"
    
  • location.hash:获取锚点部分。

    console.log(location.hash); // 输出: "#section"
    

3. history 对象

history 对象提供了与浏览器历史记录相关的方法。

3.1 前进和后退
  • history.back():返回上一个页面。

    history.back();
    
  • history.forward():前进到下一个页面。

    history.forward();
    
  • history.go(steps):前进或后退指定的步骤数。

    history.go(-1); // 后退一步
    history.go(1); // 前进一步
    
3.2 添加历史记录
  • history.pushState(stateObj, title, url):向历史记录中添加一个新的记录。
    history.pushState({ page: 2 }, 'Page 2', '/page2.html');
    

4. navigator 对象

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

4.1 获取浏览器信息
  • navigator.userAgent:获取浏览器的用户代理字符串。

    console.log(navigator.userAgent);
    
  • navigator.platform:获取操作系统平台信息。

    console.log(navigator.platform);
    

5. screen 对象

screen 对象提供了关于屏幕的信息。

5.1 获取屏幕尺寸
  • screen.widthscreen.height:获取屏幕的宽度和高度。
    console.log(screen.width, screen.height);
    

6. openclose 方法

6.1 打开新窗口
  • window.open(url, target, features):打开一个新的浏览器窗口。
    window.open('https://example.com', '_blank', 'width=800,height=600');
    
6.2 关闭窗口
  • window.close():关闭当前窗口。
    window.close();
    

示例

下面是一个综合示例,演示了如何使用 BOM 的一些常见操作:

// 获取窗口尺寸
console.log(window.innerWidth, window.innerHeight);// 设置窗口大小
window.resizeTo(800, 600);// 获取当前页面 URL
console.log(location.href);// 导航到新的 URL
location.href = 'https://example.com';// 获取屏幕尺寸
console.log(screen.width, screen.height);// 获取浏览器信息
console.log(navigator.userAgent);// 打开新窗口
window.open('https://example.com', '_blank', 'width=800,height=600');// 关闭当前窗口
// window.close(); // 注释掉这一行,以免关闭当前窗口// 监听窗口大小变化
window.addEventListener('resize', () => {console.log('窗口大小改变:', window.innerWidth, window.innerHeight);
});

通过这些示例,你可以了解如何使用 BOM 来获取和设置浏览器窗口的各种属性和状态,从而更好地控制页面的行为。

相关文章:

BOM常见操作方法汇总

BOM(Browser Object Model,浏览器对象模型)提供了与浏览器窗口交互的方法和属性。BOM 包括了许多对象,如 window、location、history、navigator 等,这些对象提供了与浏览器窗口相关的各种功能。 以下是一些常见的 BO…...

Python+whisper/vosk实现语音识别

目录 一、Whisper 1、Whisper介绍 2、安装Whisper 3、使用Whisper-base模型 4、使用Whisper-large-v3-turbo模型 二、vosk 1、Vosk介绍 2、vosk安装 3、使用vosk 三、总结 一、Whisper 1、Whisper介绍 Whisper 是一个由 OpenAI 开发的人工智能语音识别模型&#xf…...

如何在算家云搭建LivePortrait(视频生成)

一、LivePortrait简介 LivePortrait 是一个可控人像视频生成框架,能够准确、实时地将驱动视频的表情、姿态迁移到静态或动态人像视频上,生成极具表现力的视频结果。 该项目的模型产生了定性肖像动画。只要输入一张静态的肖像图像,我们的模型…...

CSS 命名规范及 BEM 在前端开发中的实践

一:CSS命名规范的重要性 1、提高代码可读性 对于开发者自身来说,遵循规范的命名可以让你在日后回顾代码时,快速理解每个样式类的用途。例如,使用 “.header-logo” 这样的命名,一眼就能看出是头部的 logo 元素的样式,而不是一些无意义的命名如 “.box1”。当团队协作开发…...

SwiftUI 6.0(iOS 18)新增的网格渐变色 MeshGradient 解惑

概述 在 SwiftUI 中,我们可以借助渐变色(Gradient)来实现更加灵动多彩的着色效果。从 SwiftUI 6.0 开始,苹果增加了全新的网格渐变色让我们对其有了更自由的定制度。 因为 gif 格式图片自身的显示能力有限,所以上面的…...

【计算机网络】详谈TCP协议确认应答机制捎带应答机制超市重传机制连接管理机制流量管理机制滑动窗口拥塞控制延迟应答

一、TCP 协议段格式 1.1、4位首部长度 4位首部长度的基本单位是4字节,也就是说如果4位首部长度填6,那报头长度就是24字节。报头长度的取值范围为[0,60]字节,也就是说选项的最大长度为40字节。 二、确认应答机制 发送数据和发送应答&#x…...

rk3566开发之rknn npu 部署

目录 NPU使用 RKNN 模型 非 RKNN 模型 RKNN-Toolkit2工具 RKNN NPU 测试代码如下 main.cc ssd.cc 调用 ssd模型进行目标检测测试 ssd.h qt 中调用 rknn npu 接口 NPU使用 RK3566 内置 NPU 模块。使用该NPU需要下载RKNN SDK,RKNN SDK 为带有 NPU 的 RK3566/RK3568 芯片…...

项目生产经理需要具备哪些技能和素质

一、专业技能 1、技术知识 熟悉项目所涉及的工程领域专业知识,包括施工工艺、技术规范、质量标准等。能够准确理解设计图纸,指导施工人员进行正确的施工操作。掌握工程测量、材料检验、工程试验等基本技能,确保工程质量符合要求。 利用进度猫…...

Java数据类型常量

目录 一、数据类型 1.1分类 1.2关键字&内存占用&范围 1.3包装类 1.4说明 1.5类型转换 1.6类型提升 二、常量 2.1java中的常量 2.2定义常量 2.3分类 一、数据类型 1.1分类 1.2关键字&内存占用&范围 数据类型关键字内存占用范围字节型byte1字节-128…...

如何提高浮点类型计算的精度

把下面这篇文章的表达方式改成像正常的人类作者写的,而不是AI写的。 —————— 如何提高浮点类型计算的精度 在后端开发中,浮点数的计算一直一个常见难题,特别是在需要与GPU协作进行复杂计算时,浮点精度的偏差可能带来预期之…...

RabbitMQ简介及安装类

RabbitMQ概述-MQ介绍 RabbitMQ是一个开源的消息代理和队列服务器,它支持多种消息协议,并且可以轻松地与多种编程语言和框架集成。RabbitMQ是使用Erlang语言编写的,因此它具有高并发和高可用性的特点。以下是RabbitMQ的一些关键特性和概念 消息…...

游戏服务器防御策略:防止玩家因DDoS攻击而掉线

在网络游戏环境中,玩家体验至关重要。然而,DDoS(分布式拒绝服务)攻击是导致玩家在游戏中频繁掉线的一个重要原因。本文将探讨如何通过一系列技术和策略来减轻DDoS攻击的影响,保障玩家的游戏体验。 一、引言 DDoS攻击是…...

Django学习笔记二:数据库操作详解

Django框架提供了一个功能强大的ORM(对象关系映射)系统,使得开发者可以使用Python代码来操作数据库,而无需编写复杂的SQL语句。以下是Django数据库操作的一些基本概念和方法: 模型定义 在Django中,模型是…...

Spring Boot 应用开发案例:在线书籍管理系统

Spring Boot 应用开发案例,涵盖从项目搭建到具体实现,包括常用的数据库操作、Restful API 开发、Spring Security 安全认证以及前后端分离架构。这个案例将以开发一个简单的“在线书籍管理系统”为例,介绍如何从头开始搭建项目、实现增删改查功能,并通过 JWT 进行用户认证。…...

阿里140滑块-滑块验证码逆向分析思路学习

一、声明! 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 文章中所有内容仅供学习交流使用,不用于其他任何目的,均已做脱敏处…...

使用 Linux 搭建并配置一个 NFS 服务器

目录 1. 安装相关软件包2. 启动并启用相关服务3. NFS 配置文件3.1 /etc/exports 文件3.2 共享目录3.3 客户端列表3.4 参数选项3.4.1 访问权限选项3.4.2 数据写入硬盘模式3.4.3 root 用户权限3.4.4 子树检查3.4.5 匿名用户3.4.6 安全性(特权端口)3.4.7 网络传输3.4.x 更多 (More…...

python发包

Python 中我们经常会用到第三方的包,默认情况下,用到的第三方工具包基本都是从 Pypi.org 里面下载。这些第三方的包都是开发者们发布的自己的库。我们有自己的想法,或者有一些常用的方法想要分享出去,就可以发布自己的库&#xff…...

农行1面:说说 final,finally,finalize的区别

你好,我是猿java。 在 Java中,“final”、“finally”和“finalize”是三个不同的关键字或方法,尽管它们的名字相似,但在功能和用途上却有显著的区别,这篇文章我们继续分析一篇农行1面的题目:说说 final&a…...

ChatGPT实时语音将于本周向免费用户推出:OpenAI DevDay 2024详细解读

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…...

一个月学会Java 第7天 字符串与键盘输入

Day7 字符串与键盘输入 字符串作为所有程序都很重要的东西,这个东西必须好好的学习,在Java中String会比较好学习,比起C和C里面会更加的简单, 在Java之中也是很好理解的,因为底层已经封装好了char数组,也就是…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...