BOM

不懂得拒绝,大多数是愚蠢的善良。

前言

BOM是js的重要的组成部分,它 提供了很多对象,用来访问浏览器功能。

window对象

window最常见的对象,它是BOM的 核心对象,js通过它访问浏览器,同时它又是Global对象,我们在网页中定义的任何一个对象、变量和函数,我都可以通过window访问。但是有一点区别,就是我们在全局作用域中定义的变量或者函数不能通过delete操作符删除,而直接在window对象上定义的属性可以。

如果页面中包含框架,则每个框架都有自己的window对象,并且保存在 frames 集合中。并且window下面有top、self、parent属性,在框架集中top 对象始终指向最高(最外)层的框架,也就是浏览器窗口;self指向当前框架的window;parent(父)对象始终指向当前框架的 直接上层框架。在特定条件下这三个属性全等。

在使用框架的情况下,浏览器中会存在多个 Global 对象。在每个框架中定义的 全局变量会自动成为框架中 window 对象的属性。由于每个 window 对象都包含原生 类型的构造函数,因此每个框架都有一套自己的构造函数,这些构造函数一一对应,但并不相等,例如top.Object并不等于top.frames[0].Object,这个问题会影响到对跨框架传递的对象使用 instanceof 操作符。

window还提供了获取浏览器窗口位置的属性和页面时口的大小,下面代码针对不同浏览器做了兼容。

window还提供了 window.open()方法既可以导航到一个特定的 URL,也可以打开一个新的浏览器窗口。这个 方法可以接收 4 个参数:要加载的 URL、窗口目标、一个特性字符串以及一个表示新页面是否取代浏览 器历史记录中当前加载页面的布尔值。通常只须传递第一个参数,最后一个参数只在不打开新窗口的情 况下使用。

调用 close()方法还可以关闭新打开的窗口,但是,这个方法仅适用于通过 window.open()打开的弹出窗口。对于浏览器的主窗口,如果没有 得到用户的允许是不能关闭它的。不过,弹出窗口倒是可以调用 top.close()在不经用户允许的情况 下关闭自己。

window还提供了setTimeout()和setInterval(),相应的还提供了clearTimeout和clearInterval清除定时器。

浏览器通过 alert()、confirm()和 prompt()方法可以调用系统对话框向用户显示消息。

location对象

location 是最有用的 BOM 对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一 些导航功能。

location还可以查询字符串;

location与位置有关的一个方法是 reload(),作用是重新加载当前显示的页面。如果调用 reload() 时不传递任何参数,页面就会以最有效的方式重新加载。也就是说,如果页面自上次请求以来并没有改 变过,页面就会从浏览器缓存中重新加载。如果要强制从服务器重新加载,则需要像下面这样为该方法 传递参数 true。

navigator 对象

navigator 对象提供了与浏览器有关的信息。到底提供哪些信息,很大程度上取决于用户的浏览器;不过,也有一些公共的属性(如 userAgent)存在于所有浏览器中。

screen 对象

screen 对象中保存着与客户端 显示器有关的信息,这些信息一般只用于站点分析。

history对象

history 对象保存着用户上网的历史记录,从窗口被打开的那一刻算起。

使用 go()方法可以在用户的历史记录中任意跳转,可以向后也可以向前。这个方法接受一个参数, 表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转(类似于单击浏览器的“后退”按钮), 正数表示向前跳转(类似于单击浏览器的“前进”按钮)。

另外,还可以使用两个简写方法 back()和 forward()来代替 go()。顾名思义,这两个方法可以 模仿浏览器的“后退”和“前进”按钮。

history 对象还有一个 length 属性,保存着历史记录的数量。这个数量 包括所有历史记录,即所有向后和向前的记录。对于加载到窗口、标签页或框架中的第一个页面而言, history.length 等于 0。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180607G1MF0000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券