JavaScript-BOM编程

BOM对象

  • 1 什么是BOM
  • 2 window对象的常见属性
  • 3 window对象的常见方法
  • 4 通过BOM编程控制浏览器行为演示
  • 5 通过BOM编程实现会话级和持久级数据存储

1 什么是BOM

  • BOM是Browser Object Model的简写,即浏览器对象模型。

  • BOM由一系列对象组成,是访问、控制、修改浏览器的属性和方法(通过window对象及属性的一系列方法 控制浏览器行为的一种编程)

  • BOM没有统一的标准(每种客户端都可以自定标准)。

  • BOM编程是将浏览器窗口的各个组成部分抽象成各个对象,通过各个对象的API操作组件行为的一种编程

  • BOM编程的对象结构如下

    • window 顶级对象,代表整个浏览器窗口
      • location对象 window对象的属性之一,代表浏览器的地址栏
      • history对象 window对象的属性之一,代表浏览器的访问历史
      • screen对象 window对象的属性之一,代表屏幕
      • navigator对象 window对象的属性之一,代表浏览器软件本身
      • document对象 window对象的属性之一,代表浏览器窗口目前解析的html文档
      • console对象 window对象的属性之一,代表浏览器开发者工具的控制台
      • localStorage对象 window对象的属性之一,代表浏览器的本地数据持久化存储
      • sessionStorage对象 window对象的属性之一,代表浏览器的本地数据会话级存储

2 window对象的常见属性

属性描述
closed返回窗口是否已被关闭。
defaultStatus设置或返回窗口状态栏中的默认文本。
document对 Document 对象的只读引用。(请参阅对象)
frames返回窗口中所有命名的框架。该集合是 Window 对象的数组,每个 Window 对象在窗口中含有一个框架。
history对 History 对象的只读引用。请参数 History 对象。
innerHeight返回窗口的文档显示区的高度。
innerWidth返回窗口的文档显示区的宽度。
localStorage在浏览器中存储 key/value 对。没有过期时间。
length设置或返回窗口中的框架数量。
location用于窗口或框架的 Location 对象。请参阅 Location 对象。
name设置或返回窗口的名称。
navigator对 Navigator 对象的只读引用。请参数 Navigator 对象。
opener返回对创建此窗口的窗口的引用。
outerHeight返回窗口的外部高度,包含工具条与滚动条。
outerWidth返回窗口的外部宽度,包含工具条与滚动条。
pageXOffset设置或返回当前页面相对于窗口显示区左上角的 X 位置。
pageYOffset设置或返回当前页面相对于窗口显示区左上角的 Y 位置。
parent返回父窗口。
screen对 Screen 对象的只读引用。请参数 Screen 对象。
screenLeft返回相对于屏幕窗口的x坐标
screenTop返回相对于屏幕窗口的y坐标
screenX返回相对于屏幕窗口的x坐标
sessionStorage在浏览器中存储 key/value 对。 在关闭窗口或标签页之后将会删除这些数据。
screenY返回相对于屏幕窗口的y坐标
self返回对当前窗口的引用。等价于 Window 属性。
status设置窗口状态栏的文本。
top返回最顶层的父窗口。

3 window对象的常见方法

方法描述
alert()显示带有一段消息和一个确认按钮的提示框。
atob()解码一个 base-64 编码的字符串。
btoa()创建一个 base-64 编码的字符串。
blur()把键盘焦点从顶层窗口移开。
clearInterval()取消由 setInterval() 设置的 timeout。
clearTimeout()取消由 setTimeout() 方法设置的 timeout。
close()关闭浏览器窗口。
confirm()显示带有一段消息以及确认按钮和取消按钮的对话框。
createPopup()创建一个 pop-up 窗口。
focus()把键盘焦点给予一个窗口。
getSelection()返回一个 Selection 对象,表示用户选择的文本范围或光标的当前位置。
getComputedStyle()获取指定元素的 CSS 样式。
matchMedia()该方法用来检查 media query 语句,它返回一个 MediaQueryList对象。
moveBy()可相对窗口的当前坐标把它移动指定的像素。
moveTo()把窗口的左上角移动到一个指定的坐标。
open()打开一个新的浏览器窗口或查找一个已命名的窗口。
print()打印当前窗口的内容。
prompt()显示可提示用户输入的对话框。
resizeBy()按照指定的像素调整窗口的大小。
resizeTo()把窗口的大小调整到指定的宽度和高度。
scrollBy()按照指定的像素值来滚动内容。
scrollTo()把内容滚动到指定的坐标。
setInterval()按照指定的周期(以毫秒计)来调用函数或计算表达式。
setTimeout()在指定的毫秒数后调用函数或计算表达式。
stop()停止页面载入。
postMessage()安全地实现跨源通信。

4 通过BOM编程控制浏览器行为演示

三种弹窗方式

    <head><meta charset="UTF-8"><title>小标题</title><script>function testAlert(){//普通信息提示框window.alert("提示信息");}function testConfirm(){//确认框var con = confirm("确定要删除吗?");if(con){alert("点击了确定")}else{alert("点击了取消")}}function testPrompt(){//信息输入对话框var res = prompt("请输入昵称","例如:张三");alert("您输入的是:"+res)}</script></head><body><input type="button" value="提示框" onclick="testAlert()"/> <br><input type="button" value="确认框" onclick="testConfirm()"/> <br><input type="button" value="对话框" onclick="testPrompt()"/> <br></body>

页面跳转

    <head><meta charset="UTF-8"><title>小标题</title><script>function goBaidu(){var flag = confirm("即将跳转到百度官网,本页信息即将丢失,确定吗?")if(flag){// 通过BOM编程地址栏url切换window.location.href="http://www.baidu.com"}}</script></head><body><input type="button" value="跳转到百度" onclick="goBaidu()"/> <br></body>

5 通过BOM编程实现会话级和持久级数据存储

  • 会话级数据 : 内存型数据,是浏览器在内存上临时存储的数据,浏览器关闭后,数据失去,通过window的sessionStorge属性实现
  • 持久级数据 : 磁盘型数据,是浏览器在磁盘上持久存储的数据,浏览器关闭后,数据仍在,通过window的localStorge实现
  • 可以用于将来存储一些服务端响应回来的数据,比如:token令牌,或者一些其他功能数据,根据数据的业务范围我们可以选择数据存储的会话/持久 级别
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>function saveItem(){// 让浏览器存储一些会话级数据window.sessionStorage.setItem("sessionMsg","sessionValue")// 让浏览器存储一些持久级数据window.localStorage.setItem("localMsg","localValue")console.log("haha")}function removeItem(){// 删除数据sessionStorage.removeItem("sessionMsg")localStorage.removeItem("localMsg")}function readItem(){console.log("read")// 读取数据console.log("session:"+sessionStorage.getItem("sessionMsg"))console.log("local:"+localStorage.getItem("localMsg"))}</script>
</head>
<body><button onclick="saveItem()">存储数据</button><button onclick="removeItem()">删除数据</button><button onclick="readItem()">读取数据</button></body>
</html>
  • 测试,存储数据后,再读取数据,然后关闭浏览器,获取数据,发现sessionStorge的数据没有了,localStorge的数据还在
  • 通过removeItem可以将这些数据直接删除
  • 在F12开发者工具的应用程序栏,可以查看数据的状态

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

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

相关文章

前端 JS 经典:数组去重万能方法

前言&#xff1a;只需要掌握这一个方法&#xff0c;就可以对有任何重复的数据数组&#xff0c;进行去重了。 可以自己思考下&#xff0c;怎么对以下对象数组去重&#xff1a; const arr [{ a: 1, b: 2 },{ b: 2, a: 1 },{ a: 1, b: 2, c: { a: 1, b: 2 } },{ b: 2, a: 1, c:…

计算机考研|408备考,如何6个月顺利上岸?经验+资料分享

如果是跨考的话&#xff0c;现在已经快六月份了&#xff0c;备考408时间真的很紧张 u1s1&#xff0c;我虽然一直推荐大家考408&#xff0c;但是也看情况&#xff0c;这种跨考&#xff0c;并且时间不充足的情况下&#xff0c;就最好不要去硬刚408了。408的复习量很大&#xff0…

动规解决01背包/完全背包精讲

还不会用动态规划解决01背包/完全背包&#xff1f;看这一篇文章就够了&#xff01; 首先我们要明白什么是01背包和完全背包。 背包问题总体问法就是&#xff1a; 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n个物品&#xff0c;第i个物品的体积为vi​ ,价值为wi​…

汽车电子都应用哪些频点的贴片晶振

晶振通过与其它元器件的连接使用&#xff0c;产生脉冲起到信号源的作用&#xff0c;所以在电子圈中有一个很形象的比喻: 如果把芯片比如电路的控制大脑&#xff0c;那晶振产生的信号就是给大脑持续供需的血液。平时&#xff0c;在我们使用的手机&#xff0c;蓝牙耳机&#xff0…

微信小程序如何变现

微信小程序有多种变现方式&#xff0c;以下是一些主要的方法&#xff1a; 广告变现&#xff1a;在小程序中嵌入广告&#xff0c;通过点击、曝光等手段获取收益。这是一种非常普遍的变现方式&#xff0c;尤其适合流量较大、用户活跃度较高的小程序。 电商变现&#xff1a;通过…

IT行业的现状和未来发展趋势:技术创新、市场需求、人才培养、政策法规和社会影响

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

Git—安装及介绍

下载Git 官网地址&#xff1a;Git - Downloads (git-scm.com) 安装 双击安装包 点击 next 检查安装 桌面&#xff0c;右键鼠标&#xff0c;是否出现 Git GUI Here 和 Git Bash Here 打开Git Bash Here 输入命令 git --verison

2024年开抖店都需要做哪些准备?这些条件缺一不可

大家好&#xff0c;我是电商花花。 作为目前国内最受欢迎的短视频电商平台&#xff0c;抖音将成为众多创业者的首选平台。 在往年我们都知道抖音小店市场很多&#xff0c;红利很大&#xff0c;利润大&#xff0c;不少人都通过抖音小店实现了脱贫&#xff0c;也有部分上班族获…

企业架构系统之-IT系统建设如何做好技术选型

背景 近日有幸与行业同仁交流工作心得&#xff0c;在讨论中&#xff0c;他们提到一个平时工作当中我们都会遇到和经历的一个问题&#xff1a;作为架构师&#xff0c;在日常工作中应如何进行技术选型&#xff1f;面对众多框架和组件中&#xff0c;我们又应如何选择&#xff0c;…

opencv4.8.0 GPU版本各平台编译

一、opencv4.8.0 ubuntu22.04上编译&#xff1a; 用cmake进行编译,需要配置三次。选中world选项&#xff0c;输入opencv_contrib_module路径。 ubuntu22.04上编译&#xff1a; cmake \ -D CMAKE_BUILD_TYPERELEASE \ -D CMAKE_INSTALL_PREFIX/usr/local \ -D BUILD_opencv_p…

【JavaSE】反射机制-基础概述

Catalog JavaSE-反射机制-基础概述1. 应用场景2. 优点3. 缺点4. Class类解析5. 获取Class类实例的方式6. 反射机制是什么7. 反射机制原理图&#xff08;老韩&#xff09;8. 具体应用 JavaSE-反射机制-基础概述 1. 应用场景 常见的如下&#xff1a; 当获取到一个未知类型但是知…

香港优才计划避坑指南及过来人建议,这6种行为会毁了你的香港身份!

香港优才计划是一项香港人才引进政策&#xff0c;如果你想真正落户香港&#xff0c;那么就需要了解清楚香港优才从申请到永居的整个流程&#xff0c;并且要注意维护好香港身份。 如果操作不当&#xff0c;可能会中断你来之不易的香港身份。 本文总结了香港优才整个流程中&…