BOM是什么

news/2025/3/18 9:24:34/文章来源:https://www.cnblogs.com/huan1026/p/18232745

BOM(Browser Object Model)

img

#一、是什么

BOM (Browser Object Model),浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象

其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退,前进,刷新,浏览器的窗口发生变化,滚动条的滚动,以及获取客户的一些信息如:浏览器品牌版本,屏幕分辨率

浏览器的全部内容可以看成DOM,整个浏览器可以看成BOM。区别如下:

01

#二、window(浏览器窗口)

Bom的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,即是浏览器窗口的一个接口,又是全局对象

因此所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。浏览器窗口对象,主要属性有:

  • name:指浏览器窗口的名字或框架的名字。这个名字是给a标记的target属性来用的。设置窗口的名字:window.name = "newWin" 获取窗口的名字:document.write(name);
  • top:代表最顶层窗口。如:window.top
  • parent:代表父级窗口,主要用于框架。
  • self:代表当前窗口,主要用于框架中。
  • innerWidth:指浏览器窗口的内宽(不含菜单栏、工具栏、地址栏、状态栏),该属性chrome支持。
  • innerHeight: 指浏览器窗品的内高(不含菜单栏、工具栏、地址栏、状态栏),该属性chrome支持。
var name = 'js每日一题';
function lookName(){alert(this.name);
}console.log(window.name);  //js每日一题
lookName();                //js每日一题
window.lookName();         //js每日一题

window方法:

  • alert():弹出一个警告对话框。
  • prompt([text],[defaulttext]):弹出一个输入对话框。
  • confirm(text):弹出一个确认对话框。如果单击“确定按钮”返回true,如果单击“取** 消”返回false。 text:要显示的纯文本
  • close():关闭窗口
  • print():打印窗口
  • open([url],[name],[options]):打开一个新窗口
  • 延时器:window.setTimeout("code",1000);// code一般是一个函数,但是放在双引号下,1000ms,返回值是延时器的id,给clearTimeout使用
  • 定时器:window.setInterval("code",1000);// code一般是一个函数,但是放在”“下,1000ms,返回值是定时器的id,给clearInterval使用

关于窗口控制方法如下:

  • moveBy(x,y):从当前位置水平移动窗体x个像素,垂直移动窗体y个像素,x为负数,将向左移动窗体,y为负数,将向上移动窗体
  • moveTo(x,y):移动窗体左上角到相对于屏幕左上角的(x,y)点
  • resizeBy(w,h):相对窗体当前的大小,宽度调整w个像素,高度调整h个像素。如果参数为负值,将缩小窗体,反之扩大窗体
  • resizeTo(w,h):把窗体宽度调整为w个像素,高度调整为h个像素
  • scrollTo(x,y):如果有滚动条,将横向滚动条移动到相对于窗体宽度为x个像素的位置,将纵向滚动条移动到相对于窗体高度为y个像素的位置
  • scrollBy(x,y): 如果有滚动条,将横向滚动条向左移动x个像素,将纵向滚动条向下移动y个像素

window.open() 既可以导航到一个特定的url,也可以打开一个新的浏览器窗口

如果 window.open() 传递了第二个参数,且该参数是已有窗口或者框架的名称,那么就会在目标窗口加载第一个参数指定的URL

window.open('htttp://www.vue3js.cn','topFrame')
==> < a href=" " target="topFrame"></ a>

window.open() 会返回新窗口的引用,也就是新窗口的 window 对象

const myWin = window.open('http://www.vue3js.cn','myWin')

window.close() 仅用于通过 window.open() 打开的窗口

新创建的 window 对象有一个 opener 属性,该属性指向打开他的原始窗口对象

#三、location

url地址如下:

http://foouser:barpassword@www.wrox.com:80/WileyCDA/?q=javascript#contents

location属性描述如下:

属性名例子说明
hash "#contents" utl中#后面的字符,没有则返回空串
host www.wrox.com:80 服务器名称和端口号
hostname www.wrox.com 域名,不带端口号
href http://www.wrox.com:80/WileyCDA/?q=javascript#contentsopen in new window 完整url
pathname "/WileyCDA/" 服务器下面的文件路径
port 80 url的端口号,没有则为空
protocol http: 使用的协议
search ?q=javascript url的查询字符串,通常为?后面的内容

除了 hash之外,只要修改location的一个属性,就会导致页面重新加载新URL

location.reload(),此方法可以重新刷新当前页面。这个方法会根据最有效的方式刷新页面,如果页面自上一次请求以来没有改变过,页面就会从浏览器缓存中重新加载

如果要强制从服务器中重新加载,传递一个参数true即可

#四、navigator(浏览器属性)

navigator 对象主要用来获取浏览器的属性,区分浏览器类型。属性较多,且兼容性比较复杂

下表列出了navigator对象接口定义的属性和方法:

02

03

  • appName:浏览器软件名称,主要用来判断客户使用的是什么核心的浏览器。如果是IE浏览器的话,返回值为:Microsoft Internet Explorer,如果是Firefox浏览器的话,返回值为:Netscape
  • appVersion:浏览器软件的核心版本号。
  • systemLanguage:系统语言
  • userLanguage:用户语言
  • platform:平台

#五、screen(显示器屏幕)

保存的纯粹是客户端能力信息,也就是浏览器窗口外面的客户端显示器的信息,比如像素宽度和像素高度

04

  • Width:屏幕的宽度,只读属性。
  • Height:屏幕的高度,只读属性。
  • availWidth:屏幕的有效宽度,不含任务栏。只读属性。
  • availHeight:屏幕的有效高度,不含任务栏。只读属性。

#六、history(浏览历史)

history对象主要用来操作浏览器URL的历史记录,可以通过参数向前,向后,或者向指定URL跳转

常用的属性如下:

  • history.go()

接收一个整数数字或者字符串参数:向最近的一个记录中包含指定字符串的页面跳转,

history.go('maixaofei.com')

当参数为整数数字的时候,正数表示向前跳转指定的页面,负数为向后跳转指定的页面

history.go(3) //向前跳转三个记录
history.go(-1) //向后跳转一个记录
  • history.forward():向前跳转一个页面
  • history.back():向后跳转一个页面
  • history.length:获取历史记录数

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wgpu图文详解(01)窗口与基本渲染

写在前面 如果对Rust与Wgpu比较关注的同学可能在网络上搜到过@sotrh国外大佬编写的《Learn Wgpu》,以及国内大佬@jinleili的优秀翻译作品《学习 Wgpu》。这些学习教程质量很高,在我学习Wgpu的过程中给了很大的帮助。那为什么还有我这个系列的文章呢?首先,大佬的系列目前win…

vue 项目中使用v-permission 实现按钮级权限控制

在使用 vue-element-admin 框架进行开发时,您可以通过自定义指令来实现按钮级的权限控制。这个自定义指令可以根据用户的权限动态地控制按钮的显示。以下是一个详细的实现步骤: 1、在 src 目录下按照如下目录结构,创建一个权限文件,例如 permission.js: 目录结构:src/dir…

VSCode修改侧边栏以及代码字体大小

1、界面字体大小通过缩放处理 查看-外观-放大(快捷键Ctrl + =) 查看-外观-缩小(快捷键Ctrl + -) 2、编辑器/终端字体大小通过配置调整 文件-首选项-设置参考: https://blog.csdn.net/edward_zcl/article/details/137718199

活动回顾丨AI 原生应用架构专场北京站 PPT 下载

5 月 24 日,飞天技术沙龙首个 AI 原生应用架构专场在北京举办。《AI 原生应用框架发展趋势》、《通义灵码技术解析,打造 AI 原生开发新范式》、《应用容器化托管及工程实践》、《云消息队列的成本治理实践》、《基于日志构建智能化全栈可观测,提速日常运维》5 个议题,分别从…

Qt学习第四篇(主窗口和ui的使用)

QMainWindow QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个停靠部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。菜单栏 一个主窗口最…

ARP协议:网络世界的地址翻译官

一 . 引言在当今快速发展的汽车行业中,车载以太网正逐步成为推动汽车智能化、网联化浪潮的核心技术之一。作为传统以太网技术在汽车领域的创新应用,车载以太网不仅继承了以太网的开放性、成熟性和互操作性,还针对车辆特有的环境和需求进行了优化与定制,为车载内部的复杂数据…

逐梦航天!AIRIOT大学计划暑期训练营来啦!

品质训练营助力“小白”,开启大神之路! AIRIOT大学计划暑期训练营等你来!“产业赋能,教育创新",为了促进物联网产业的纵深发展和创新,推进教育链、产业链与创新链的有机结合,提升理论、实践和创新能力,扩展学生视野,促进学生交流,为中国最有前途的物联网人才成长…

为什么MySQL的information_schema.tables字段index_length显示为0?

为什么MySQL的information_schema.tables字段index_length显示为0?测试版本为:MySQL社区版 8.0.36分情况1:innodb引擎的表是索引组织表,按照主键进行顺序存放。则表是索引,索引是表,index_length不会有值。 如下,创建一个表,并追加主键,查看索引情况。(root@localhost…

etcd-v3.5.9源代码分析

Github上下载etcdv3.5.9源代码,包含server和client两部分。 先放ETCDv3 读写流程图镇楼读流程写流程 Etcd Server server->etcdmain->main.go:Main():startEtcdOrProxyV2() ->etcd.go:startEtcd()->StartEtcd()->etcdserver目录下server.go:NewServer() 初始化…

【长亭雷池WAF】介绍及“动态防护”功能深度体验

一、介绍 什么是雷池 雷池(SafeLine)是长亭科技耗时近 10 年倾情打造的 WAF,核心检测能力由智能语义分析算法驱动。 Slogan: 不让黑客越雷池半步。 什么是 WAF WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。 区别于传统防火墙,WAF 工作在应用层,对基…

Goland无法Debug

起因 今天用goland,Debug代码出现如下报错 其原因是因为正在使用的Delve试调器版本太旧,无法兼容当前的Go语言版本1.22.1 Delve是Go语言的一个调试工具,用于提供源码级别的调试功能 Go语言每隔一段时间会发布新版本,而相应的调试器Delve也可能会更新以提供新的特性或修复已…

2.6倍!WhaleTunnel 客户POC实景对弈DataX

作为阿里早期的开源产品,DataX是一款非常优秀的数据集成工具,普遍被用于多个数据源之间的批量同步,包括类似Apache DolphinScheduler的Task类型也对DataX进行了适配和增强,可以直接在DolphinScheduler里面利用通用的数据源调用DataX进行数据批量同步。 作为DolphinSchedule…