JS高级程序设计(12)

article/2025/10/5 21:58:17

BOM

浏览器对象模型BOM提供了与网页无关的浏览器功能对象。

文章目录

  • BOM
  • 一、window对象
    • 1.Global作用域
    • 2.窗口关系
    • 3.窗口位置与像素比
    • 4.窗口大小
    • 5.视口位置
    • 6.导航与打开新窗口
    • 7.定时器
    • 8.系统对话框
  • 二、location对象
    • 1.查询字符串
    • 2.操作地址
  • 三、navigator对象
    • 1.检测插件
    • 2.注册处理
  • 四、screen对象
  • 五、history对象
    • 1.导航
  • 总结


一、window对象

BOM的核心是window对象,表示浏览器的实例。window对象在浏览器中由两重身份,一是ECMAScript中的Global对象,另一个就是浏览器窗口的JavaScript接口。

1.Global作用域

因为window对象被复用为ECMAScript的Global对象,所以通过var声明的所有全局变量和函数都会变成window对象的属性和方法,使用let或const替代var,则不会把变量添加给全局对象。

2.窗口关系

top对象始终指向最上层(最外层)窗口,及浏览器窗口本身。parent对象则始终指向当前窗口的父窗口。self对象始终指向window。

3.窗口位置与像素比

screenLeftscreenTop属性表示窗口相对于屏幕左侧和顶部的位置,返回值的单位是CSS像素。
moveTo()moveBy()方法移动。moveTo()接收要移动到的新位置的绝对坐标x和y。而moveBy()则接收相对当前位置在两个方向上移动的像素数。
代码如下(示例):

//把窗口移动到左上角
window.moveTo(0,0);
//把窗口向下移动100像素
window.moveBy(100,100);

4.窗口大小

outerWidthouterHeight返回浏览器窗口自身的大小。innerWidthinnerHeight返回浏览器窗口中页面视口大小,不包括工具条和滚动条。
可以使用resizeTo()resizeBy()方法调整窗口大小。resizeTo()接收新的高度和宽度值,而resizeBy()接收宽度和高度各要缩放多少。

5.视口位置

度量文档相对于视口滚动距离的属性有两对,返回相等的值:window.pageXoffset/window.scrollX和window.pageYoffset和window.scrollY。
scroll()、scrollTo()和scrollBy()方法滚动页面。这三个方法都接收表示相对视口距离的x和y坐标,这两个参数在前两

个方法中表示要滚动到的坐标,最后一个方法中表示滚动的距离。

6.导航与打开新窗口

window.open()方法可以用于导航到指定URL,也可以用于打开新浏览器窗口。这个方法接收4个参数:要加载的URL、目标窗口、特性字符串和表示新窗口在浏览器历史记录中是否替代当前加载页面的布尔值。
代码如下(示例):

window.open("http://www.wrox.com/","topFrame");

特性字符串是一个逗号分隔的设置字符串,用于指定新窗口包含的特性。

设置说明
fullscreen“yes"或"no”表示新窗口是否最大化。仅限IE支持
height数值新窗口高度。这个值不能小于100
left数值新窗口x轴坐标(不能负值)
location“yes"或"no”表示是否显示地址栏
Menubar“yes"或"no”表示是否显示菜单栏(默认"no")
resizable“yes"或"no”表示是否可以拖动改变新窗口大小(默认"no")
scrollbars“yes"或"no”表示是否可以在内容过长时滚动(默认"no")
status“yes"或"no”表示是否显示状态栏
toolbar“yes"或"no”表示是否显示工具栏
top数值新窗口的y轴坐标
width数值新窗口的宽度

close()方法关闭新打开的窗口,只能用于window.open()创建的弹出窗口。opener属性指向打开它的窗口。

7.定时器

JavaScript在浏览器中是单线程执行的,但允许使用定时器指定在某个时间之后或每隔一段时间就执行相应代码。setTimeout()用于指定在一定时间后执行某行代码,而setInterval()用于指定每隔一段时间执行某些代码。
setTimeout()方法通常接收两个参数:要执行的代码和在执行回调函数前等待的时间(毫秒)。clearTimeout()方法可以取消超时任务。
代码如下(示例):

//在1秒后显示警告框
let timeoutId=setTimeout( () => alert("Hello world!"),1000);
clearTimeout(timeoutId);

setInterval()方法接收两个参数:要执行的代码,以及把下一次执行定时代码的任务添加到队列要等待的时间(毫秒)。clearInterval()取消超时任务。

8.系统对话框

使用alert()confirm()prompt()方法,可以让刘兰兰器调用系统对话框向用户显示消息。它们的外观由操作系统或者浏览器决定,无法使用CSS设置。这些对话框都是同步的模态对话框,即在它们显示时,代码会停止执行,在它们消失后,代码才会恢复执行。
警告框(alert)通常用于向用户显示一些它们无法控制的消息。用户唯一的选择就是在看到警告框后把它关闭。
在这里插入图片描述
确认框(confirm)有两个按钮:“Cancel”和“OK”。用户通过点击不同的按钮表明希望接下来执行什么操作。
在这里插入图片描述
提示框(prompt)用于提示用户输入消息,除了OK和Cancel按钮,提示框还会显示一个文本框让用户输入内容。给方法接收两个参数:要显示给用户的文本,以及文本框的默认值(可以是空字符串)。
在这里插入图片描述
JavaScript还可以显示另外两种对话框:find()print()。这两种对话框都是异步显示的,即控制权会立即返回给脚本。

二、location对象

location是最有用的BOM对象之一,提供了当前窗口中加载文档的信息,以及通常的导航功能。
假设加载的URL为http://foouser:barpassword@www.wrox.com:80/WileyCDA/?q=javascript#contents,location对象的内容:

属性说明
location.hash“#contents”URL散列值(井号后跟零或多个字符)
location.host“www.wrox.com:80”服务器名及端口号
location.hostname“www.wrox.com”服务器名
location.href"http://www.wrox.com:80/WileyCDA/?q=javascript#contents"当前加载页面的完整URL
location.pathname“/WileyCDA/”URL中的路径和文件名
location.port“80”请求的端口
location.protocol“http:”页面使用的协议
location.search“?q=javascript”域名前指定的用户名
location.password“barpassword”域名前指定的密码
location.origin"http://www/wrox.comURL的源地址

1.查询字符串

解析查询字符串:
代码如下(示例):

let getQueryStringArgs=function(){//取得没有开头问号的查询字符串let qs=(location.search.length > 0 ? location.search.substring(1) : ""),//保存数据的对象args={};//把每个参数添加到args对象for(let item of qs.split("&").map(kv=> kv.split("="))){let name=decodeURIComponent(item[0]),value=decodeURIComponent(item[1]);if(name.length){args[name]=value;}}return args;
}

2.操作地址

可以使用assign()、location.href或window.location设置一个URL。

三、navigator对象

1.检测插件

plugins数组检测插件,属性:

  • name:插件名称
  • description:插件介绍
  • filename:插件的文件名
  • length:由当前插件处理的MIME类型数量。

2.注册处理

registerProtocolHandler()方法可以把一个网站注册为处理某种特定类型信息应用程序。

四、screen对象

screen对象保存的纯粹是客户端能力信息,也就是浏览器窗口外面的客户端显示器信息。

五、history对象

history对象表示当前窗口首次使用以来用户的导航历史记录。

1.导航

go()方法可以在用户历史记录中沿任何方向导航,可以前进也可以后退。这个方法只接收一个参数,这个参数可以是一个整数,表示前进或后退多少步。
go()由两个简写方法:back()和forward()。这两个方法模拟了浏览器的后退按钮和前进按钮。

总结

浏览器对象模型(BOM)是以window对象为基础的,这个对象代表了浏览器窗口和页面可见的区域。window对象也被复用为ECMAScript的Global对象,因此所有全局变量和函数都是它的属性,,而且所有原生类型的构造函数和普通函数也都从一开始就存在于这个对象之上。本章讨论BOM的一下内容:
 要引用其他window对象,可以使用几个不同的窗口指针。
 要通过location对象可以以编程方式操纵浏览器的导航系统。通过设置这个对象上的属性,可以改变浏览器URL中的某一部分或全部。
 使用replace()方法可以替换浏览器历史记录中当前显示的页面,并导航到新URL。
 navigator对象提供关于浏览器的信息。提供的信息类型取决于浏览器,不过有些属性如userAgent是所有浏览器支持的。
BOM中的另外两个对象也提供了一些功能。screen对象中保存着客户端显示器的信息。这些信息通常用语评估浏览网站的设备信息。history对象提供了操纵浏览器的历史记录的能力,开发者可以确定历史记录中包含多少个条目,并以编程的方式实现在历史记录中导航,而且也可以修改历史记录。


http://chatgpt.dhexx.cn/article/ykdWton7.shtml

相关文章

JavaScript 高级程序设计

理解原型对象 无论什么时候,只要创建一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。 在默认的情况下,所有的原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个包含一个指向prototyp…

js高级程序设计(第一章)

1.什么是JavaScript 1.1 简短的历史回顾 出现背景:当时,验证简单的表单,需要大量与服务器的往返通信成为用户的痛点。 出现时间:1997 年,JavaScript 1.1 作为提案被提交给欧洲计算机制造商协会(Ecma&…

JavaScript高级程序

文章目录 1. JavaScript 实现1.1 ECMAScript1.2 DOM1.3 BOM1.4 小结 1. JavaScript 实现 虽然 JavaScript 和 ECMAScript 基本上是同义词,但 JavaScript 远远不限于 ECMA-262 所定义的那样。 完整的 JavaScript 实现包含以下几个部分:  核心(ECMAScript)  文档…

JavaScript高级程序设计——读书笔记

文章目录 第1章 JavaScript简介第2章 在HTML中使用JavaScript第3章 基本概念第4章 变量、作用域、内存问题第5章 引用类型第6章 面向对象的程序设计第7章 匿名函数第8章 BOM第9章 客户端检测第10章 DOM第11章 DOM2和DOM3第12章 事件第13章 表单脚本第14章 错误处理与调试第15章…

javascript高级程序设计第四版(javascript高级程序设计第四版)

如何学习 JavaScript 先说说学js的条件 论条件,咱是文科生,大学专业工商管理,和计算机毛关系都没;有人说英语,读了四年大学,很遗憾,咱还四级没混过;就咱这条件都学得乐呵呵的&#x…

JavaScript高级程序设计学习笔记----初识JavaScript

一、JavaScript概述 1.JavaScript 介绍: 简称JS,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行。主要用来实现网页的动态效果,用户交互及前后端的数据传输等。 2.JavaScript 组成: 核心语法 - ECMAScr…

JavaScript高级程序设计 第4版

文章目录 第 1 章  什么是JavaScript1.2JavaScript1.2.1 ECMAScript1.2.2 DOM1.2.3 BOM 第 2 章 HTML中的JavaScript2.1 script元素2.1.1 标签占位符2.1.2 推迟执行脚本2.1.3 异步执行脚本2.1.4 动态加载脚本2.1.5 XHTML中的变化 2.2 noscript元素 第 3 章 语言基础3.1…

javascript高级程序设计pdf(JavaScript高级程序设计PDF版)

javascript入门书籍推荐 javascript权威指南 第六版 javascript高级程序设计 第三版 都是干货啊javascript高级程序设计!经典中的经典《javascript权威指南》 《javascript入门经典》第五版完整版 求《JavaScript高级程序设计(第3版)》PDF下载地址 权威指南 javascript高级教程…

JavaScript 高级程序设计(第3版)

内容简介 ECMAScript 5 和 HTML5 在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为 JavaScript 增添了很多适应未来发展的新特性。《JavaScript 高级程序设计(第3版)》这一版除增加5章全新内容外,其他章节也有较大幅度…

Javascript高级程序设计第四版详细测评

简介 哈喽大家好, 我是大圣,上次做了一个js的书籍测评,评价还不错,在做css和node之前,再做几本书的详细推荐吧, 国庆今天又在家好好读了几本具有代表性的 javascript高级程序设计【红宝书】javascript忍者秘籍你不知道…

JavaScript高级程序设计 第4版(中文高清)扫描版

1. JavaScript组成 核心ECMAScript文档对象模型DOM浏览器对象模型BOM 1.2.1 ECMAScript 定义语言的基础 规定了语言的组成部分:语法、类型、语句、关键字、保留字、操作符、对象 js nodejs 都实现了ECMAScript 1.2.2 DOM 文档对象模型 Document Object Model …

Java新手入门值得看的五本书!

很多知识都可以通过书本学习,Java学习也需要书籍,尤其是对于Java初学者和Java自学者来说尤为重要,选择了好了配套书籍在自学的路上可以达到事半功倍的效果,下面为Java初学和自学的朋友推荐几本合适的书籍希望对大家有所帮助。 1、…

学Java可以看哪些书?6本Java书籍推荐

学Java有哪些推荐书籍可以看?很多人都会有这样的疑问。今天,小千整理了一些Java经典书籍,分享给大家。 如果你初出茅庐,对Java感兴趣,想要学Java,在这行深钻研,那么这些书绝对不能少。如果你已…

Java项目:图书馆管理系统思路分析

当当当当~~~~欢迎大家阅读,今天和我一起来整理图书馆管理系统项目的思路分析吧! 一、项目说明 长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较烦琐。在借书时,读者首先将要借的书和借阅证交给工…

必读的10本有关Java的书籍

想知道如何提高你对Java的了解?想成为更好的Java开发人员?来对地方了 我将分享一些最好的Java书籍。这些书经受住了时间的考验,随着岁月的流逝变得越来越重要。 不管是在今年明年,你总有很多东西要学,这也就是为什么…

Java程序员必读的10本书籍

以下列出了10本书,对于任何希望提高Java知识和理解的Java程序员来说都是必不可少的。 如果你是一名程序员,想知道如何提高你对Java的了解或者成为更好的Java开发人员,那你就来对地方了。在本文中,我将分享一些最好的Java书籍。这…

从入门到进阶,JAVA书籍的最佳阅读顺序!

本文首发于知乎,已获得1000赞和收藏。 原文链接:https://www.zhihu.com/question/269505829/answer/1791006152 先介绍下本人的情况,希望对大家学习Java之路有一定帮助。 本人本科完全没接触过Java,后自学Java,对整个…

年底了,感谢大家2022年的支持,虚竹哥送10本JAVA好书

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主&#x1f3…

Java 图书管理系统

学习了类和对象之后,就可以自己来做个小的项目来提升自己的能力了。本文章就来说明如何来做一个简单的图书管理系统。写一些小项目是一种很锻炼逻辑和熟悉语法的好方法。 在做这些项目的时候,要明白一点是我们的Java是面向对象的,要使用面向对…

JAVA学习,你必读的5本JAVA书籍

给广大JAVA爱好者推荐JAVA教程,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物,第四版翻译的已经不错了,其实如果英文OK的人还是读原版比较好。 …