js浏览器对象模型(BOM)

浏览器对象模型(Browser Object Model,BOM):浏览器为js提供的对象集合。

1 windows对象

windows对象:表示浏览器的框架以及与其相关的内容,比如滚动条和导航栏图标等等。或者说windows对象就代表浏览器本身。windows对象是个全局对象,他不需要使用名称访问自己的属性和方法。

//下面的代码本质是相同的
alert("hello!");window.alert("hello!");

windows对象的某些属性也是对象。这些属性(对象)有location、history、document、navigator、screen。其中document属性(对象)又包含forms、images、links等属性(对象)。

1012348-20161228173446367-844760936.png

2 history对象

history对象跟踪用户访问的每个页面,这个页面列表也叫做 history stack。用户单机浏览器的 Back 和 Forward 按钮,其本质就是在历史栈里进行切换。

2.1 属性

属性注释
length返回浏览器历史栈中的 URL 数量

2.2 方法

方法注释
back()加载 history 列表中的前一个 URL
forward()加载 history 列表中的下一个 URL
go()加载 history 列表中的某个具体页面
history.go(-1);     //后退1个页面
history.back();history.go(1);       //前进1个页面
history.forward();history.go(-2);     //后退2个页面

3 location对象

3.1 属性

location包含与当前页面位置有关的信息,常用属性如下:

//设置或获取整个 URL 为字符串
console.log(location.href);
/* http://localhost:63342/frontend_projects/test/index.html?_ijt=ll3ai4h2v873l9ukcm2g8a73hr  *///设置或获取对象指定的文件名或路径
console.log(location.pathname);
/* /frontend_projects/test/index.html*///设置或获取与 URL 关联的端口号码
console.log(location.port);
/* 63342 *///设置或获取 URL 的协议部分
console.log(location.protocol);
/* http: *///设置或获取 href 属性中在井号“#”后面的分段
console.log(location.hash);
/* *///设置或获取 location 或 URL 的 hostname 和 port 号码
console.log(location.host);
/* localhost:63342 *///设置或获取 href 属性中跟在问号后面的部分
console.log(location.search);
/* ?_ijt=1lrq8evbm5uovrl1ib8af65g5n */

3.2 方法

方法注释
reload()重新加载当前文档
replace()用新的文档替换当前文档

使用新页面替换当前页面

//方法一:
//新页面是加在历史栈顶的,可以使用back()来返回到原来的页面
location.href ="newPage.html";//方法二:
//使用replace()的本质是用新页面替换掉历史栈中的旧页面,因此无法通过history.back()退回到原来的页面
location.replace("newPage.html");

navigator对象包含浏览器和运行浏览器相关的信息

4.1 属性

属性注释
appName返回浏览器的模型
appVersion返回浏览器的平台和版本信息
appCodeName返回浏览器的代码名
platform返回运行浏览器的操作系统平台
systemLanguage返回 OS 使用的默认语言
userLanguage返回 OS 的自然语言设置
onLine返回一个布尔值,指示指示浏览器是否处于脱机模式
cookieEnabled返回一个布尔值,指示指示浏览器是否启用了cookie
userAgent返回由客户机发送服务器的 user-agent 头部的值
var tmp1 = navigator.appName;
//Netscapevar tmp2 = navigator.appVersion;
//5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36var tmp3 = navigator.appCodeName;
//Mozillavar tmp4 = navigator.platform;
//Win32var tmp5 = navigator.systemLanguage;
//undefinedvar tmp6 = navigator.userLanguage
//undefinedvar tmp7 = navigator.onLine;
//truevar tmp8 = navigator.cookieEnabled;
//truevar tmp9 = navigator.userAgent;
//Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

4.2 方法

方法注释
javaEnabled()返回一个布尔值,指示浏览器是否支持并启用了 Java

4.3 新增的geolocation

H5中为navigator新增了geolocation属性,并且geolocation也是对象。它可以获取并利用设备的物理位置。

geolocation中最常用的就是getCurrentPosition()方法:

//编写回调函数
//Geolocation.prototype.getCurrentPosition = function(successCallback,errorCallback,options) {};
function geoSucess(position) {var coords = position.coords;var latitude = coords.latitude;var longitude = coords.longitude;var message = "you are at "+latitude+","+longitude;alert(message);
}function geoError(errorObj) {alert(errorObj.message);  //把系统返回的错误对象作为回调函数的参数}navigator.geolocation.getCurrentPosition(geoSucess,geoError);

5 screen对象

Screen 对象包含有关客户端显示屏幕的信息

详细信息参考:http://www.w3school.com.cn/jsref/dom_obj_screen.asp

6 document对象

有关document的高级操作就是DOM,后面我会介绍,这里只简单介绍document对象的基础用法。

document 是BOM中最常用的一个对象之一。通过这个对象可以访问到页面上的HTML元素以及其属性和方法。

document 有很多关联的属性,这些属性是类似数组的结构,即集合。常用的集合有forms、images、links。

1012348-20161228173209945-363112083.png

6.1 属性

cookie:设置或返回与当前文档有关的所有 cookie。该属性是一个可读可写的字符串,可使用该属性对当前文档的 cookie 进行读取、创建、修改和删除操作。

domain:返回当前文档的域名。该属性是一个只读的字符串,包含了载入当前文档的 web 服务器的主机名。

lastModified:返回文档被最后修改的日期和时间。该值来自于 Last-Modified HTTP 头部,它是由 Web 服务器发送的可选项。

referrer:返回载入当前文档的文档的 URL。如果当前文档不是通过超级链接访问的,则为 null。这个属性允许客户端 JavaScript 访问 HTTP 引用头部。

title:返回当前文档的标题

URL:返回当前文档的 URL。一般情况下,该属性的值与包含文档的 Window 的 location.href 属性相同。不过,在 URL 重定向发生的时候,这个 URL 属性保存了文档的实际 URL,而 location.href 保存了请求的 URL。

6.2 方法

getElementById():返回对拥有指定 id 的第一个对象的引用

getElementsByName():返回带有指定名称的对象集合

getElementsByTagName():返回带有指定标签名的对象集合

close():关闭用 document.open() 方法打开的输出流,并显示选定的数据

open() :打开一个流,以收集来自任何 document.write() 或 document.writeln() 方法的输出

write():向文档写 HTML 表达式 或 JavaScript 代码

writeln():等同于 write() 方法,不同的是在每个表达式之后写一个换行符

//效果相同
document.writeln("hello!")
document.write("hello!\n")

6.3 集合

6.3.1 images集合

页面上的所有图像都保存在images集合中,images[0]表示页面上的第一个图片位,依次类推。所以我们可以利用js来按需选择要显示的图像源。

<img name="myImage" src="bg.jpg"/><script>var myImage = ["bj1.gif","bj2.gif","bj3.gif","bj4.gif"];var imgIndex = prompt("Enter a number from 0 to 3","");document.images[0].src = myImage[imgIndex];document.images.length //获取页面的图片位数量</script>
6.3.2 links集合

对于每一个有href属性的超链接元素<a/>,浏览器都会创建一个a对象。与images集合类似,页面上的所有a对象都包含在links集合中。

document.links.length //获取页面链接的数量

7 浏览器测试

常用的代码测试有两种:特性检测浏览器嗅探

7.1 特性检测

特性检测是指检测浏览器是否支持某个特性的过程。

//检测浏览器是否支持navigator.geolocation
if(navigator.geolocation){//blablabla
}

也可以写成下面的格式:

if(typeof navigator.geolocation!="undefined"){//blablabla
}//在支持geolocation的浏览器中,类型为"object,而在不支持geolocation的浏览器中,类型为"undefined"

7.2 浏览器嗅探

浏览器嗅探就是基于浏览器的userAgent字符串的,然而这个字段是可以被修改的,所以非常不可靠。可以通过修改user-Agent来实现浏览器和操作系统的伪装。

//navigator.appName    返回浏览器的模型
//对IE返回"Microsoft Internet Explorer",对Firefox、Chrome、Safari则返回"Netscape"//navigator.userAgent   返回浏览器与操作系统相关的信息
//Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

转载于:https://www.cnblogs.com/whatisfantasy/p/6230327.html

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

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

相关文章

Hello Playwright:(8)等待页面加载

在我们前面的文章中&#xff0c;我们始终使用await page.GotoAsync(url);加载页面&#xff0c;我们的目的是等待足够长的时间让页面上的元素出现。但是&#xff0c;我们更希望永远不要因为等待浪费任何时间。WaitUntilGotoAsync方法的定义如下&#xff1a;Task<IResponse?&…

【ArcGIS微课1000例】0012:ArcGIS创建及连接ArcSDE企业级地理数据库实例

文章目录 实验材料实验过程创建企业级数据库连接企业级数据库创建要素类要素入库实验材料 ArcGIS:版本为10.2Server.ecp:版本为10.2SQL Server:版本为2008实验过程 创建企业级数据库 企业级地理数据库的创建需要通过工具箱来实现。 数据库平台:SQL Server 实例:localhos…

C语言试题172之实现冒泡排序算法

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:实现冒泡…

Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染

Qt移动应用开发&#xff08;八&#xff09;&#xff1a;实现跨平台的QML和OpenGL混合渲染 上一篇文章讲到了利用C这个桥梁&#xff0c;我们实现了QML和Java的交互。Qt 5大力推崇的QML/JS开发&#xff0c;让轻量、高速开发的QML/JS打头阵&#xff0c;让重量的C撑腰&#xff0c;差…

【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放

导航【初探HTML5之使用新标签布局】用html5布局我的博客页&#xff01;【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放【HTML5初探之绘制图像&#xff08;上&#xff09;】看我canvas元素引领下一代web页面【HTML5初探之绘制图像&#xff08;下&#xff09;】看…

两时间差

/** * Comments:返回时间差 * param 两个字符串类型的时间差(time1-time2),type(D天,H时,M分,S秒,Z-S天时分秒) * return */ public final static SimpleDateFormat SF_SIZE19 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//初始化时间格式 public static String …

【ArcGIS微课1000例】0013:ArcGIS创建色带图例(以GlobeLand30土地覆盖数据为例)

本文以GlobeLand30土地覆盖数据(2010年)为例,讲解在ArcGIS中创建色带图例的方法。 案例数据: 色带图例: 创建过程: 选择2010年数据,点击添加到右侧的图例项。 在图例向导里面,删除图例标题,点击下一步。

使用.NET IoT驱动超声波测距传感器

背景最近买的一堆传感器到货了&#xff0c;先来把玩一下超声波测距传感器。超声波传感器一般用于机器人&#xff0c;小车的避障&#xff0c;物体的测距&#xff0c;液位检测&#xff0c;停车检测等领域。HC-SR04知识回顾开始之前我们先复习一下高中的物理知识。原理通过上图的原…

2019-nCoV 全国新型肺炎疫情每日动态趋势可视图

传染源: 野生动物&#xff0c;可能为中华菊头蝠 病毒: 新型冠状病毒 2019-nCoV 传播途径: 经呼吸道飞沫传播&#xff0c;亦可通过接触传播 易感人群: 人群普遍易感。老年人及有基础疾病者感染后病情较重&#xff0c;儿童及婴幼儿也有发病 潜伏期: 一般为 3~7 天&#xff0c;最长…

C语言试题173之实现插入排序算法

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:实现排序…

【ArcGIS遇上Python】ArcGIS Python将多个文件夹内的分幅数据整合到同一个文件夹内——以Globeland30数据为例

文章目录 WinRAR解压缩ArcGIS Python批处理从Glabeland30官网下载的全球地覆盖数据包括3年(2000、2010、2020),每一年都是按图幅存储的tif格式栅格数据。以2000的数据为例,全球共812个图幅,每一个图幅对应一个压缩包,如下图所示。 WinRAR解压缩 在进行数据预处理时,必须…

Delphi中字符串比较大小 VS Oracle-SQL中字符串比较大小

重点注意Delphi和Oracle-SQL中比较字符串时空字符串的根本性的不同Delphi中的字符串比较 Delphi中字符串比较大小的规则&#xff1a;对应位置的字符按照字符编码值逐个对比&#xff0c;直到遇到可以确定大小关系的就结束比较参考《Delphi的Ord函数和ASCII码对照表》 常见的一些…

STM8S和STM8L调试串口中断的注意点

源&#xff1a;STM8S和STM8L调试串口中断的注意点

C语言试题174之实现快速排序算法

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:实现快速…

解决slideDown()、slideUp()执行结束后才执行下一次,导致鼠标离开后很久动画依然在执行的问题...

问题描述&#xff1a; 给一个容器设置了mouseenter时&#xff0c;一个隐藏的box通过slideDown()显示出来&#xff1b;mouseleave时&#xff0c;通过slideUp()隐藏。 当鼠标不断在容器上滑过时&#xff0c;会导致鼠标离开很久后&#xff0c;动画也在不断执行 解决方法&#xff…

Docker Compose 安装 Superset

前言动手学 dockerSuperset 是一个强大的在线 SQL 查询编辑工具&#xff0c;同时也是一个轻量级的 BI 工具&#xff0c;今天我们就来动手学一下用 docker compose 安装 Superset。安装动手学 docker安装 git 并克隆项目&#xff1a;yum install git -ygit clone https://github…

[转]再见 NoSQL!

为解决大规模数据集合多重数据种类带来的挑战&#xff0c;NoSQL 应运而生&#xff0c;但现在却也遇到了诸多问题&#xff0c;本文作者 Rick Negrin&#xff0c;曾在微软工作 12 年&#xff0c;并在 SQL Server 团队度过大部分光阴&#xff0c;他提出&#xff0c;是时候「和 NoS…

【ArcGIS Pro微课1000例】0008:ArcGIS Pro加载不同来源的在线底图数据

ArcGIS Pro可以很方便的选择不同来源的在线底图数据,如中国地图彩色版、各种形式的天地图等。 打开ArcGIS Pro,点击左下角的【设置】。 点击【选项】。 ArcGIS Pro提供了三种形式的底图:组织的默认底图、自定义底图<

ORA-16198: LGWR received timedout error from KSR

ORA-16198: LGWR received timedout error from KSRORA-16198 意味着主库上的LOG_ARCHIVE_DEST_2的NET_TIMEOUT设置的太小&#xff0c;导致LNS不能在设置的时间内将日志传输到备库。解决方法是提高NET_TIMEOUT的值到15-20 秒&#xff0c;SQL>ALTER SYSTEM SET LOG_ARCHIVE_D…

php+mysql实现数据分批插入

上周需要将云端的数据有条件的录入到mysql中&#xff0c;最开始是使用遍历数据然后一条条的插入的笨方法&#xff0c;结果速度慢的要死&#xff0c;所以又随便写了个笨方法2.0&#xff0c;记录一下自己菜鸟的成长历程。同时这也是在博客园的第一篇文章&#xff0c;目的仅仅是单…