JavaScript 中 BOM 基础知识有哪些?

news2024/12/23 19:31:37

浏览器对象模型(Browser Object Model,简称 BOM)是 JavaScript 的组成部分之一,BOM 赋予了 JavaScript 程序与浏览器交互的能力。

window 对象是 BOM 的核心,用来表示当前浏览器窗口,其中提供了一系列用来操作或访问浏览器的方法和属性。

另外,JavaScript 中的所有全局对象、函数以及变量也都属于 window 对象,甚至我们前面介绍的 document 对象也属于 window 对象。

注意:如果 HTML 文档中包含框架(<frame> 或 <iframe> 标签),浏览器会为 HTML 文档创建一个 window 对象的同时,为每个框架创建一个额外的 window 对象。

window 对象中的属性

下表中列举了 window 对象中提供的属性及其描述:

属性描述
closed返回窗口是否已被关闭
defaultStatus设置或返回窗口状态栏中的默认文本
document对 Document 对象的只读引用
frames返回窗口中所有已经命名的框架集合,集合由 Window 对象组成,每个 Window 对象在窗口中含有一个 <frame> 或 <iframe> 标签
history对 History 对象的只读引用,该对象中包含了用户在浏览器中访问过的 URL
innerHeight返回浏览器窗口的高度,不包含工具栏与滚动条
innerWidth返回浏览器窗口的宽度,不包含工具栏与滚动条
localStorage在浏览器中以键值对的形式保存某些数据,保存的数据没有过期时间,会永久保存在浏览器中,直至手动删除
length返回当前窗口中 <iframe> 框架的数量
location引用窗口或框架的 Location 对象,该对象中包含当前 URL 的有关信息
name设置或返回窗口的名称
navigator对 Navigator 对象的只读引用,该对象中包含当前浏览器的有关信息
opener返回对创建此窗口的 window 对象的引用
outerHeight返回浏览器窗口的完整高度,包含工具栏与滚动条
outerWidth返回浏览器窗口的完整宽度,包含工具栏与滚动条
pageXOffset设置或返回当前页面相对于浏览器窗口左上角沿水平方向滚动的距离
pageYOffset设置或返回当前页面相对于浏览器窗口左上角沿垂直方向滚动的距离
parent返回父窗口
screen对 Screen 对象的只读引用,该对象中包含计算机屏幕的相关信息
screenLeft返回浏览器窗口相对于计算机屏幕的 X 坐标
screenTop返回浏览器窗口相对于计算机屏幕的 Y 坐标
screenX返回浏览器窗口相对于计算机屏幕的 X 坐标
sessionStorage在浏览器中以键值对的形式存储一些数据,数据会在关闭浏览器窗口或标签页之后删除
screenY返回浏览器窗口相对于计算机屏幕的 Y 坐标
self返回对 window 对象的引用
status设置窗口状态栏的文本
top返回最顶层的父窗口

示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>JavaScript</title>
</head>
<body>
 <script type="text/javascript">
        window.defaultStatus = "JavaScript"
        document.write(window.defaultStatus + "<br>");    // 输出:JavaScript
        document.write(window.innerHeight + "<br>");      // 输出:314
        document.write(window.innerWidth + "<br>");       // 输出:539
        document.write(window.length + "<br>");           // 输出:0
        document.write(window.location + "<br>");         // 输出:file:///F:/code/index.html
        document.write(window.opener + "<br>");           // 输出:null
        document.write(window.outerHeight + "<br>");      // 输出:558
        document.write(window.outerWidth + "<br>");       // 输出:555
        document.write(window.parent + "<br>");           // 输出:[object Window]
        document.write(window.screenLeft + "<br>");       // 输出:2263
        document.write(window.screenTop + "<br>");        // 输出:401
        document.write(window.screenX + "<br>");          // 输出:2263
        document.write(window.screenY + "<br>");          // 输出:401
 </script>
</body>
</html>

window 对象中的方法

下表中列举了 window 对象中提供的方法及其描述:

方法描述
alert()在浏览器窗口中弹出一个提示框,提示框中有一个确认按钮
atob()解码一个 base-64 编码的字符串
btoa()创建一个 base-64 编码的字符串
blur()把键盘焦点从顶层窗口移开
clearInterval()取消由 setInterval() 方法设置的定时器
clearTimeout()取消由 setTimeout() 方法设置的定时器
close()关闭某个浏览器窗口
confirm()在浏览器中弹出一个对话框,对话框带有一个确认按钮和一个取消按钮
createPopup()创建一个弹出窗口,注意:只有 IE 浏览器支持该方法
focus()使一个窗口获得焦点
getSelection()返回一个 Selection 对象,对象中包含用户选中的文本或光标当前的位置
getComputedStyle()获取指定元素的 CSS 样式
matchMedia()返回一个 MediaQueryList 对象,表示指定的媒体查询解析后的结果
moveBy()将浏览器窗口移动指定的像素
moveTo()将浏览器窗口移动到一个指定的坐标
open()打开一个新的浏览器窗口或查找一个已命名的窗口
print()打印当前窗口的内容
prompt()显示一个可供用户输入的对话框
resizeBy()按照指定的像素调整窗口的大小,即将窗口的尺寸增加或减少指定的像素
resizeTo()将窗口的大小调整到指定的宽度和高度
scroll()已废弃。您可以使用 scrollTo() 方法来替代
scrollBy()将窗口的内容滚动指定的像素
scrollTo()将窗口的内容滚动到指定的坐标
setInterval()创建一个定时器,按照指定的时长(以毫秒计)来不断调用指定的函数或表达式
setTimeout()创建一个定时器,在经过指定的时长(以毫秒计)后调用指定函数或表达式,只执行一次
stop()停止页面载入
postMessage()安全地实现跨源通信

示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>JavaScript</title>
</head>
<body>
 <p id="show_tag">此处显示点击按钮的效果</p>
 <button onclick="myBtoa()">btoa()</button>
 <button onclick="myAtob()">atob()</button>
 <button onclick="myAlert()">alert()</button>
 <button onclick="myConfirm()">confirm()</button>
 <button onclick="myOpen()">open()</button>
 <button onclick="myMoveBy()">moveBy()</button>
 <button onclick="myMoveTo()">moveTo()</button>
 <button onclick="myPrint()">print()</button>
 <button onclick="myPrompt()">prompt()</button>
 <button onclick="myResizeBy()">resizeBy()</button>
 <button onclick="myClose()">close()</button>
 <script type="text/javascript">
        var ptag = document.getElementById('show_tag');
        var str;
        function myBtoa(){
            str = btoa("JavaScript");
            ptag.innerHTML = str;
        }
        function myAtob(){
            ptag.innerHTML = typeof str;
            if(str == undefined){
                ptag.innerHTML = "请先点击 btoa() 按钮";
                return;
            }
            ptag.innerHTML = atob(str);
        }
        function myAlert(){
            alert("这是一个提示框!");
        }
        function myConfirm(){
            var x;
            var r = confirm("按下按钮!");
            if (r == true){
                x = "你按下了\"确定\"按钮!";
            }
            else{
                x = "你按下了\"取消\"按钮!";
            }
            ptag.innerHTML = x;
        }
        var myWin;
        function myOpen(){
            if(myWin == undefined || (myWin != undefined && myWin.closed == true)){
                myWin = window.open('', '', 'width=200,height=100');
            }else{
                return;
            }
        }
        function myMoveBy(){
            if(myWin == undefined || myWin.closed == true) myOpen();
            myWin.moveBy(200, 200);
        }
        function myMoveTo(){
            if(myWin == undefined || myWin.closed == true) myOpen();
            myWin.moveTo(0, 0);
        }
        function myPrint(){
            print();
        }
        function myPrompt(){
            var name = prompt("请输入你的名字。")
            if (name != null && name != ""){
                ptag.innerHTML = "你好 " + name  + "! 今天感觉如何?";
            } else {
                ptag.innerHTML = "你没有输入任何内容";
            }
        }
        function myResizeBy(){
            if(myWin == undefined || myWin.closed == true) myOpen();
            myWin.resizeBy(100, 100);
        }
        function myClose(){
            if(myWin == undefined) return;
            if(myWin != undefined && myWin.closed == false) myWin.close();
        }
 </script>
</body>
</html>

运行结果如下图所示,点击页面中的按钮即可实现相应功能。

黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创新领航 | 竹云参编《基于区块链的数据资产评估实施指南》正式发布!

10月25日&#xff0c;由深圳数宝数据服务股份有限公司和深圳职业技术大学提出&#xff0c;中国科学院深圳先进技术研究院、中国电子技术标准化研究院、中国&#xff08;天津&#xff09;自由贸易试验区政策与产业创新发展局、网络空间治理与数字经济法治&#xff08;长三角&…

称球问题之十二个球有一个次品不知轻重三次称出

使用穷举法来解&#xff1a; 12个球分A1234、B1234、C1234 1、A1234B1234→坏在C1234 1.1、A123C123→坏在C4 1.2、A123<C123→坏在C123&#xff0c;且知坏的重 1.2.1、C1C2→坏在C3 1.2.2、C1<C2→坏在C2 1.2.3、C1>C2→坏在C1 1.3、A123>C123→坏在C123&…

24位AD转换器16路模拟信号转RS-485/232,数据采集A/D转换模块 YL29

特点&#xff1a; ● 16路模拟信号采集&#xff0c;隔离转换 RS-485/232输出 ● 采用24位AD转换器&#xff0c;测量精度优于0.05% ● 通过RS-485/232接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压3000VDC ● 宽电源供电范围&#xff1a;8 ~ 32VDC ● 可靠性高…

申请流量卡时,运营商到底审核什么?

当我们在网上申请流量卡时&#xff0c;会有一个运营商审核的过程&#xff0c;只有运营商审核通过后才会发卡&#xff0c;那么问题来了&#xff0c;运营商审核&#xff0c;到底是审核的什么呢&#xff1f; 申请流量卡时&#xff0c;运营商的审核是非常严格的&#xff0c;如果不…

【开源】基于SpringBoot的天然气工程业务管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…

TypeError: lineplot() takes from 0 to 1 positional arguments but 2 were given

使用pyplot生成图形 from matplotlib import pyplot as plt import pandas as pd import seaborn as sns import numpy as np# 设置中文字体 plt.rcParams[font.sans-serif] [SimHei] sns.set_style({font.sans-serif:[simhei, Arial]})# 加载数据 hr pd.read_csv(data/hr.c…

从【臀部监控】到【电脑监控软件】,企业如何在隐私权与管理权博弈中找到平衡

【臀部监控】 依稀记得在2021年初某个高科技产品的爆火&#xff0c;惹得各大媒体网站争相报道。 起因是一位杭州网友在论坛上发帖&#xff0c;不久前公司给员工发放了一批高科技坐垫。 这个坐垫能自动感应心跳、呼吸在内的诸多人体数据&#xff0c;还能提醒人保持正确坐姿以及…

超全面测评!2023年最常用的15款原型设计工具

在互联网和软件行业中&#xff0c;原型设计是产品经理、交互设计师以及运营人员等职位必不可少的一门技能。原型设计工具的重要性也是人尽皆知&#xff0c;这都是因为原型设计工具是帮助设计者表达产品想法、功能设定及流程逻辑的最佳方式。 今天就为大家带来原型设计工具的相…

电脑扬声器未插入?4个方法帮你恢复声音!

“太奇怪了吧&#xff0c;我的电脑扬声器一直显示未插入&#xff0c;我使用电脑的时候也是一直都没有声音。这是为什么呢&#xff1f;我应该怎么解决这个问题呀&#xff1f;” 我们使用电脑播放音频或视频时&#xff0c;都需要用到电脑扬声器。如果扬声器无法播放声音&#xff…

ERP管理系统的运作流程是怎样的?

ERP管理系统的运作流程是怎样的&#xff1f; 下文中用到的图片和系统&#xff0c;都来自于我们公司正在用的软件——简道云进销存软件 这是我们团队搭建的模板&#xff0c;需要的可以自取&#xff0c;可以直接使用&#xff0c;也可以在模板的基础上自行搭建 ERP管理系统模板&…

排序整理2

一、一些概念 排序方法是“稳定的”&#xff1a;假设两个元素相等&#xff0c;若在排序后的序列中&#xff0c;排序前就在前面的元素仍在前面&#xff0c;则称所用的排序方法是稳定的&#xff1b;反之&#xff0c;若排序后两个相等元素调换相对位置&#xff0c;则称所用的排序…

直播切片想要快速批量制作应该怎么做?

账号准备是启动直播切片的第一步。要求账号拥有1000粉丝并完成实名认证&#xff0c;因为只有达到1000粉才能开通橱窗进行带货。这是最基本的要求。 接下来是获得授权。与大IP工作室合作并取得授权是免费的&#xff01;在每个大IP工作室或切片授权号上留意统一的授权对接时间&a…

GoLong的学习之路(十一)语法之标准库 fmt.Printf的使用

上回书说到&#xff0c;函数&#xff0c;说了函数是如何实现的&#xff0c;高级函数有哪几种调用方式&#xff0c;本章我将介绍fmt 标准库中我常用的一些函数。 文章目录 fmtfmt的向外输出print格式化占位通用占位符布尔类型占位整型占位浮点数与复数字符串和[]byte指针宽度表示…

阿里巴巴:海量请求下的接口并发,都有哪些方案?

设定一个场景&#xff0c;假如一个电商商品封装API接口在某段时间突然上升&#xff0c;会怎么办&#xff1f; 生活中的例子来说&#xff0c;假设冰墩墩在当天晚上上热搜之后&#xff0c;迅速有十几万人去淘宝下单购买&#xff0c;此时并没有做好对该商品的缓存预热以及准备&am…

华为OD机试 - 滑动窗口最大和 - 滑动窗口(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

Java数据类型,变量与运算符

1.字面常量 常量是在程序运行期间&#xff0c;固定不变的量称为常量。 public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");} } 在以上程序中&#xff0c;输出的Hello Word&#xff0c;其中的“Hello Word”就是…

Go语言的Mutex

在本教程中&#xff0c;我们将了解互斥体。我们还将学习如何使用互斥体和通道解决竞争条件。 关键部分 在跳转到互斥体之前&#xff0c;了解并发编程中临界区的概念非常重要。当程序并发运行时&#xff0c;修改共享资源的代码部分不应被多个Goroutines同时访问。这部分修改共…

Delft3D水动力-富营养化模型实践技术高级应用

湖泊富营养化等水质问题严重威胁我国经济社会的发展&#xff0c;也是水环境和水生态领域科研热点之一。水环境模型是制定湖泊富营养化控制对策&#xff0c;预测湖泊水环境发展轨迹的重要工具&#xff0c;在环境影响评价、排污口论证等方面也有着广泛的应用。荷兰Delft研究所开发…

腾讯云轻量应用服务器性能如何?来自学生的评价

腾讯云轻量应用服务器怎么样&#xff1f;CPU性能如何&#xff1f;我们班同学人手一台&#xff0c;轻量服务器简单高效快速部署&#xff0c;不限制CPU性能&#xff0c;并且费用很低&#xff0c;很适合我们这种群生群体。可以的话&#xff0c;可以推出一些适合学生用户的GPU实例&…

二叉树问题——验证二叉搜索树

摘要 98. 验证二叉搜索树 一、验证二叉搜索树解析 给定一个二叉树&#xff0c;判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征&#xff1a; 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是…