【JS交互篇】BOM基础、Window、Location、Navagator、Screen、History对象

一、BOM 概述

在 JavaScript 语言中有三种对象:内置对象、宿主对象、自定义对象。

宿主对象就是执行 JavaScript 脚本的环境所提供的对象。对于网页编程来说,js 是运行在浏览器上的,所以对于网页编程来说,宿主对象就是浏览器对象,而学习浏览器对象,就要学习浏览器对象模型,即BOM。

JavaScript 基础到高级
Canvas游戏开发
原生JavaScipt案例合集
JavaScript +DOM基础

BOM (Browser Object Model),浏览器对象模型:

  • BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window ( 即:窗口对象 );
  • 浏览器对象模型(Browser Object Model)尚无正式标准;但由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是BOM的方法和属性

在这里插入图片描述

二、Window 对象

2.1 概述

  • window 对象作为浏览器模型中的顶级对象,指的是当前浏览器窗口,其下有对应的只读属性指向 document、history、location、navigator、screen、clipboardData 等对象的引用。

  • 所有浏览器都支持 window 对象,所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员 (全局变量是 window 对象的属性,全局函数是window 对象的方法,甚至 Html Dom 的 document 也是 window 对象属性之一。

    window.document.getElementById("myId")document.getElementById("myId") 相同。

2.2 窗口的打开与关闭

  • open(url, target, args) 打开新窗口

    • 参数 url 可选。为打开的网址或路径
    • 参数 target 可选。窗口打开方式
    • 参数args 可选。窗口样式设置。为 key=value 的参数字符串。 窗口设置的样式参数参考如下:
      • top=像素值,窗口顶部离开屏幕顶部的像素数
      • left=像素值,窗口左端离开屏幕左端的像素数
      • width=像素值,窗口的宽度 height=像素值,窗口的高度
      • menubar=yes|no,设置窗口是否有菜单
      • toolbar=yes|no,设置窗口是否有工具条
      • scrollbars=yes|no,设置窗口是否有滚动条
      • status=yes|no,设置窗口是否有状态栏
  • close() 关闭当前窗口

2.3 窗口关系及框架

  • 通过 window.open() 创建的新窗口的 Window 对象具有 opener 属性,可以通过 opener 打开它的原始窗口,这样两个窗口之间就可以相互引用,彼此之间可以读取对方的属性方法,而窗体也是一样;

  • 窗体是由 iframe 创建的,该元素有 contentWindow 属性,它引用自身的 Window 对象,而 Window 对象有 frameElement 属性,若该 Window 对象表示一个窗体,则 frameElement 是对 iframe 元素的引用,如以下元素

    <iframe id = 'f1'></iframe>
    var elt = document.getElementById('f1');
    var win = elt.contentWindow;
    win.frameElement === elt; //true
    window.frameElement === elt; //false 对于顶级窗口来说永远是false
    
  • 每个 Window 对象都有一个 frames 属性,包括窗体和子窗体。frames 属性引用了它所包含的窗体和子窗体的 Window 对象,frames 是由这些 Window 对象组成的类数组对象,可通过数字或窗体名来进行索引,如引用第一个子窗体 frames[0],引用第二个子窗体的第三个子窗体 frames[1].frames[2],引用兄弟窗体 parent.frames[1];

  • 内置对象在不同的窗口、窗体之间是相互独立的,它们有自己的一份独立的构造函数和原型对象的副本,它会在所有窗口窗体内自动预定义;而自定义对象则不同,可以在能够相互通信的窗口、窗体之间共享这个对象的构造函数和它的原型;如窗口中定义了Set类,有子窗体A和B,则:
    在父窗口中 :

    var s = new Set(); String.toString = function(){return '内置对象';} (修改String的toString方法)
    s.a === 1; //true
    

    在A中 :

    var sa = new parent.Set(); parent.Set.prototype.a =1; (给自定义类Set的原型添加属性a,则所有能相互通信的窗口共享a)
    var str = '测试';  str.toString; //测试  (调用的是窗体A自身的String对象的toString方法)
    

    在B中 :

    var Set = top.Set(); var sb = new Set(); sb.a === 1;  //true
    
  • 要引用窗口中的一个窗体,可以使用如下语法:

    frames[i] //当前窗口的框架
    self.frames[i] //当前窗口的框架
    w.frames[i] //窗口 w 的框架
    
  • 要引用一个框架的父窗口(或父框架),可以使用下面的语法:

    parent //当前窗口的父窗口
    self.parent //当前窗口的父窗口
    w.parent //窗口 w 的父窗口
    
  • 要从顶层窗口含有的任何一个框架中引用它,可以使用如下语法:

    top //当前框架的顶层窗口
    self.top //当前框架的顶层窗口
    f.top //框架 f 的顶层窗口
    

2.4 消息框(弹窗、系统对话框)

  • alert() 警告框。常用于确保用户可以得到某些信息;当警告框出现后,用户需要点击确定按钮才能继续进行操作
  • confirm() 确认框。用于验证是否接收用户操作,当确认框弹出时,用户可以点击“确认”或者“取消”来确定用户操作,当点击“确认”,确认框返回true,如果点击“取消”,确认框返回false
  • prompt() 提示框。常用于提示用户在进入页面前输入某个值;当提示框出现后,用户需要输入某个值,然后点击确认后者取消按钮才能继续操作;若点击确认,那么返回输入的值,若点击 取消,则返回null

2.5 获取当前视口大小

innerWidth 获取当前视口的宽度(只读)

innerHeight 获取当前视口的高度(只读)

不包含工具栏、菜单栏、系统栏、控制台区域… 包含滚动条

IE8及以下浏览器版本不兼容,那么请使用以下方式获取:

document.documentElement.clientWidth || document.body.clientWidth;
dowcument.documentElement.clientHeight || document.body.clientHeight;

IE6及以下只能通过 document.body 获取

浏览器兼容性写法

var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

2.6 计时器

setInterval(callbackfn, time) 间歇调用;每隔指定的时间执行一下重复的操作,多次 调用,除非手动清除

setTimeout(callbackfn, time) 延时调用;指定时间后去执行某个操作,只执行一次,可以在执行之前将其清除掉

clearInterval(timer) 清除指定间歇调用

clearTimeout(timer) 清除指定延时调用

var num = document.getElementById("num");var count = 0;var timer = window.setInterval(function(){if(count === 100){// 清除计时器clearInterval(timer)}num.innerHTML = count++ + "+";
},80);window.setTimeout(function(){alert("不好意思,我打断一下!!")
},5000)
``

三、Navigator对象

Navigator对象属性如下:

属性说明
appCodeName返回浏览器的代码名
appName返回浏览器的名称
appVersion返回浏览器的平台和版本信息
platform返回运行浏览器的操作系统平台
userAgent返回由客户机发送服务器的user-agent 头部的值

三、Screen对象

Screen对象属性如下:

属性说明
availHeight返回屏幕的高度(不包括Windows任务栏)
availWidth返回屏幕的宽度(不包括Windows任务栏)
colorDepth返回目标设备或缓冲器上的调色板的比特深度
height返回屏幕的总高度
pixelDepth返回屏幕的颜色分辨率(每象素的位数) 不支持IE8及以下浏览器
width返回屏幕的总宽度

四、History对象

History对象属性如下:

属性说明
length返回历史列表中的网址数

History对象方法如下:

方法说明
back()加载 history 列表中的前一个 URL,相当于浏览器上面的回退箭头
forward()加载 history 列表中的下一个 URL,相当于浏览器上面的前进箭头
go()加载 history 列表中的某个具体页面

五、Location对象

Location对象属性如下:

属性描述
hash返回一个URL的锚部分
host返回一个URL的主机名和端口
hostname返回URL的主机名
href返回完整的URL
pathname返回的URL路径名。
port返回一个URL服务器使用的端口号
protocol返回一个URL协议(如:http https ftp等协议)
search返回一个URL的查询部分

Location对象方法如下:

方法说明
assign()载入一个新的文档
reload()重新载入当前文档,相当于浏览器上面的刷新按钮
replace()用新的文档替换当前文档

附地址栏解析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jYjueXtA-1691110488436)(BOM笔记.assets/image-20210112161122731.png)]

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

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

相关文章

Spring详解(学习总结)

目录 一、Spring概述 &#xff08;一&#xff09;、Spring是什么&#xff1f; &#xff08;二&#xff09;、Spring框架发展历程 &#xff08;三&#xff09;、Spring框架的优势 &#xff08;四&#xff09;、Spring的体系结构 二、程序耦合与解耦合 &#xff08;一&…

SOP/详解*和**/python数据结构(iter,list,tuple,dict)/ 解包

一、错误解决合集 1. > combined_seq.named_children() 2. isinstance 2th parameter : must be a type or tuple of types > 改为tuple&#xff0c;不要用列表。改为 LLLayer (nn.Conv2d,nn.Linear) 3. File “test.py”, line 90, in calculate_fin_fout print(“hi”…

MySQL第六七弹,自连接等复杂查询,索引部分知识

一、&#x1f49b; 自连接&#xff1a;自己和自己笛卡尔积&#xff08;奇淫巧技&#xff0c;特殊场景很牛逼&#xff09; SQL&#xff1a;编写条件都是列和列之间的比较&#xff0c;但是SQL无法进行&#xff0c;行与行之间的比较。 如&#xff1a;显示所有java比计算机原理高的…

想参加华为杯竞赛、高教社杯和数学建模国赛的小伙伴看过来

本文目录 ⭐ 赛事介绍⭐ 辅导比赛 ⭐ 赛事介绍 ⭐ 参赛好处 ⭐ 辅导比赛 ⭐ 写在最后 ⭐ 赛事介绍 华为杯全国研究生数学建模竞赛是由华为公司主办的一项面向全国研究生的数学建模竞赛。该竞赛旨在通过实际问题的建模和解决&#xff0c;培养研究生的创新能力和团队合作精神&a…

【Winform学习笔记(五)】引用自定义控件库(dll文件)

引用自定义控件库dll文件 前言正文1、生成dll文件2、选择工具箱项3、选择需要导入的dll文件4、确定需要导入的控件5、导入及使用 前言 在本文中主要介绍 如何引用自定义控件库(dll文件)。 正文 1、生成dll文件 通过生成解决方案 或 重新生成解决方案 生成 dll 文件 生成的…

Centos部署Springboot项目详解

准备启动jar包&#xff0c;app.jar放入指定目录。 一、命令启动 1、启动命令 java -jar app.jar 2、后台运行 nohup java -jar app.jar >/dev/null 2>&1 & 加入配置参数命令 nohup java -Xms512M -Xmx512M -jar app.jar --server.port9080 spring.profiles…

[代码案例] 快速入手matlab绘图基本指令

主要内容 Matlab绘图指令基本语法&#xff0c;涵盖画布位置大小&#xff0c;坐标调整&#xff0c;图例标签&#xff0c;子图绘制等 part 1 生成绘图数据据 part 2 绘图基本指令 part 3 多条曲线绘制 part 4 子图分块绘制方法 part 5 指定画布绘制 代码 % part 1 t0:0.01:30;…

Swish for MacBook触控板窗口管理软件

Swish可以帮助您使用触控板&#xff0c;轻松对mac窗口进行管理&#xff0c;只需提前设置好预定的设置即可&#xff0c;非常方便&#xff01; 几乎所有的窗口管理工具用的都是快捷键或者鼠标拖移的方式来管理窗口&#xff0c;Swish 却另辟蹊径&#xff0c;为窗口管理引入了手势…

静态路由综合实验

实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】R6为isp&#xff0c;接口IP地址均为公有地址;该设备只能配置IP地址&#xff0c;之后不能再对其进行任何配置 【2】R1~R5为局域网&#xff0c;私有IP地址192.168.1.0/24&#xff0c;请合理分配 【3】所有路由器上环回…

寒假作业(蓝桥杯2016年省赛C++A组第6题 )

题目&#xff1a; 注&#xff1a;蓝桥杯2016年省赛CA组第6题 请填写表示方案数目的整数。 题解&#xff1a; 由题可知这是一道全排列问题&#xff0c;因此我们可以使用c的next_permutation函数对于1-13的数字进行全排列即可&#xff0c;并每次排列判断是否满足题意。 注意…

2023 蓝桥杯真题B组 C/C++

https://www.dotcpp.com/oj/train/1089/ 题目 3150: 蓝桥杯2023年第十四届省赛真题-冶炼金属 题目描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V&#xff0c;V 是一个正整数&#xff0c;这意味着消耗 V 个普通金 属 O…

RF手机天线仿真介绍(二):孔径调谐和阻抗调谐

目录 简介孔径调谐阻抗调谐孔径调谐组件选择分析 简介 由于手机运行所需的频段、功能和模式的数量不断增加&#xff0c;现代手机的 RF 前端 (RFFE) 设计也日益复杂。需要采用更多天线&#xff0c;使用载波聚合 (CA)、4x4 MIMO、Wi-Fi MIMO 和新的宽带 5G 频段来提供更高的数据…

【初阶C语言】学会结构体

1.结构体类型的声明 2.结构体初始化 3.结构体成员访问 4.结构体传参 前言&#xff1a;结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 一、结构体类型的声明 1.结构的声明 结构体声明的模板&#xff1a; struct tag {member-li…

某银行软件测试笔试题

&#xff08;时间90分钟&#xff0c;满分100分&#xff09; 考试要求&#xff1a;计算机相关专业试题 一、填空题&#xff08;每空1分&#xff0c;共10分&#xff09; 1. ______验证___是保证软件正确实现特定功能的一系列活动和过程。 2. 按开发阶段分&#xff0c;软件测试可…

寻找旋转排序数组中的最小值——力扣153

文章目录 题目描述解法 二分法 题目描述 解法 二分法 int findMin(vector<int>& nums){int l0, rnums.size()-1;while(l<r){int mid (lr)/2;if(nums[mid]<nums[r]) rmid;else lmid1;}return nums[l];}

【雕爷学编程】 MicroPython动手做(38)——控制触摸屏

MixPY——让爱(AI)触手可及 MixPY布局 主控芯片&#xff1a;K210&#xff08;64位双核带硬件FPU和卷积加速器的 RISC-V CPU&#xff09; 显示屏&#xff1a;LCD_2.8寸 320*240分辨率&#xff0c;支持电阻触摸 摄像头&#xff1a;OV2640&#xff0c;200W像素 扬声器&#…

git常用指令

git add命令 作用&#xff1a;移动文件&#xff1a;工作区-->暂存区 git add .&#xff1a;把所有文件都放到暂存区 git commit命令 作用&#xff1a;移动文件&#xff1a;暂存区-->本地仓库 git status命令 作用&#xff1a;查看修改状态 git log命令 作用&#xf…

小研究 - 主动式微服务细粒度弹性缩放算法研究(四)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放&#xff0c;忽略了能够充分利用单台服务器资源的细粒度垂直缩放&#xff0c;从而导致资源浪费。为此&#xff0c;本文设计了主动式微服务细粒度弹性缩放算法…

c语言实现八大排序详细解析

首先先看排序算法的整体分类 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff…

unity摄像机跟随玩家

1.下载摄像机包 2.创建摄像机 3.拖拽玩家