BOM
BOM的全称为 Browser Object Model ,被译为 浏览器对象模型。BOM提供了独立于HTML页面内容,而与浏览器相关的一系列对象。主要被用于管理浏览器窗口及与浏览器窗口之间通信等功能。
BOM是由浏览器所提供的一系列对象,例如 window 对象等。DOM中的document对象实际上是window对象的属性。
Window对象是BOM 结构中的最顶层的对象,其他对象都是以Window对象的属性形式出现。
BOM是JavaScript中唯一一个没有标准的内容。
javascript中的语法标准是 ECMA ,DOM 的标准是 W3C 制定的。
window对象
Window 对象表示当前浏览器窗口,是BOM 中最顶层的对象。Window对象的属性和方法应用于当前整个浏览器窗口。
全局Window对象
由于Window对象是浏览器窗口中最顶层的对象,也就是说,定义在全局域中的变量和函数,实际上都可以是Window对象的属性和方法。
调用window对象的属性和方法时,可以省略”window.”。
定义全局变量和函数时,实际上是为window对象添加属性和方法。
var a = 'a';
- 直接调用全局变量名称 - console.log(a)
- 通过window对象的属性形式调用 - window.a
- 通过this关键字调用 - this.a
值得说明的是: 这一点与 JavaScript 作用域有很大关系。
Window对象与 self 属性
Window 对象的 self 属性返回当前浏览器窗口的只读引用。换句话讲,self 属性返回的是 Window 对象的引用。
1 | /* |
滚动窗口操作
Window 对象提供了以下两个滚动浏览器窗口的方法:
scrollBy(x, y): 根据指定像素值来滚动浏览器窗口。将页面从当前位置移动指定的距离。
x:向右移动的距离。如果为负值,则向左移动。
y:向下移动的距离。如果为负值,则向上移动。scrollTo(x, y): 将浏览器窗口滚动到指定坐标值。将页面移动到指定的坐标值(x, y)。
navigator对象
Navigator 对象表示当前浏览器,该对象包含了浏览器的信息。
值得注意的是: Navigator 对象没有相应标准,不过各个浏览器都支持。
常用属性
Navigator 对象提供一系列常用属性,获取当前浏览器的信息。具体内容如下:
属性名称 | 说明 |
---|---|
appCodeName | 浏览器的代码名 |
appName | 浏览器的名称 |
appVersion | 浏览器的平台和版本信息 |
platform | 运行浏览器的操作系统平台 |
使用不同浏览器,结果如下:
属性名称 | Chrome | firefox | IE11 | IE8 |
---|---|---|---|---|
appCodeName | Mozilla | Mozilla | Mozilla | Mozilla |
appName | Netscape | Netscape | Netscape | Microsoft Internet Explorer |
appVersion | 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 | 5.0 (Windows) | 5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko | 4.0 (compatible; MSIE 8.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729) |
platform | Win32 | Win32 | Win32 | Win32 |
userAgent属性
Navigator 对象提供很多属性,可以来识别当前浏览器及操作系统信息。但绝大多数属性在目前浏览器中已经不再起作用了。而 Navigator 对象的 userAgent 属性依旧可以实现识别浏览器的功能。
userAgent 属性返回由客户机发送服务器的 user-agent 头部的值。userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。
浏览器产品 | userAgent属性值 |
---|---|
Firefox | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0 |
Chrome | Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 |
IE 8 | Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) |
IE 9 | Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) |
IE 10 | Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) |
IE 11 | Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko |
Safari | Mozilla/5.0 (Macintosh; Intel Mac OS X 10124) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30 |
值得注意的是: IE 11 版本的 userAgent 属性信息已经不再包含有关 IE 浏览器的信息,所以我们不能通过 userAgent 属性判断 IE 11 浏览器了。
作用:
用于判断用户当前的浏览器产品
1
2
3
4
5
6
7
8
9
10
11
12var ua = navigator.userAgent;
if(/firefox/i.test(ua)){
console.log('当前使用的是 Firefox 浏览器');
}else if(/chrome/i.test(ua)){
console.log('当前使用的是 Chrome 浏览器');
}else if(/safari/i.test(ua)){
console.log('当前使用的是 Safari 浏览器');
}else if(/msie/i.test(ua)){
console.log('当前使用的是 IE 11 之前版本的浏览器');
}else if("ActiveXObject" in window){
console.log('当前使用的是 IE 11 浏览器');
}用于判断用户当前的操作系统
1
2
3
4
5
6
7
8
9if (/windows/i.test(ua)){
console.log('当前使用的是 Windows 操作系统');
}else if (/mac/i.test(ua)){
console.log('当前使用的是 Mac 操作系统');
}else if (/android/i.test(ua)){
console.log('当前使用的是 Android 操作系统');
}else if (/iphone/i.test(ua)){
console.log('当前使用的是 iPhone 操作系统');
}
history对象
History 对象包含用户在浏览器中访问过的 URL(网址)。
length属性
History 对象的 length 属性可以获取用户在浏览器中访问网址的数量。
length 属性声明了浏览器历史列表中的元素数量。
前进与后退
History 对象还提供了以下方法实现浏览器前进和后退功能。具体方法如下:
- forward(): 实现跳转下一个页面,作用和浏览器的前进按钮一样。
- back(): 实现转跳到上一个页面,作用和浏览器的回退按钮一样。
- go(): 实现跳转到指定的页面。如果为负数表示后退,如果为正数表示前进。
location对象
Location 对象包含了浏览器的地址栏中的信息。该对象主要用于获取和设置地址。
获取和设置地址
1 | // 获取当前浏览器窗口的地址栏信息 |
上述功能我们同样可以通过 Location 对象的 href 属性完成。
1 | // 获取当前浏览器窗口的地址栏信息 |
location对象的属性
属性 | 描述 |
---|---|
hash | 设置或返回从井号 (#) 开始的 URL(锚)。 |
host | 设置或返回主机名和当前 URL 的端口号。 |
hostname | 设置或返回当前 URL 的主机名。 |
href | 设置或返回完整的 URL。 |
pathname | 设置或返回当前 URL 的路径部分。 |
port | 设置或返回当前 URL 的端口号。 |
protocol | 设置或返回当前 URL 的协议。 |
search | 设置或返回从问号 (?) 开始的 URL(查询部分)。 |
1 | console.log(location.href);// http://localhost:63342/DAY21_prac/CODE/06_Location%E5%AF%B9%E8%B1%A1.html?_ijt=m43hr038iube02pjfo42jk0lpt |
location对象的方法
方法名 | 说明 |
---|---|
assign() | 载入一个新的文档,作用和直接修改 location 相同 |
reload() | 重新载入当前文档,作用和刷新按钮一样。参数为 true 时,则会强制清空缓存刷新页面 |
replace() | 用新的文档替换当前文档(不会生成历史记录,不能使用回退按钮回退) |
screen对象
Screen 对象包含有关客户端显示屏幕的信息。
screen对象的属性
属性 | 描述 |
---|---|
availHeight | 返回显示屏幕的高度 (除 Windows 任务栏之外)。 |
availWidth | 返回显示屏幕的宽度 (除 Windows 任务栏之外)。 |
bufferDepth | 设置或返回调色板的比特深度。 |
colorDepth | 返回目标设备或缓冲器上的调色板的比特深度。 |
deviceXDPI | 返回显示屏幕的每英寸水平点数。 |
deviceYDPI | 返回显示屏幕的每英寸垂直点数。 |
fontSmoothingEnabled | 返回用户是否在显示控制面板中启用了字体平滑。 |
height | 返回显示屏幕的高度。 |
logicalXDPI | 返回显示屏幕每英寸的水平方向的常规点数。 |
logicalYDPI | 返回显示屏幕每英寸的垂直方向的常规点数。 |
pixelDepth | 返回显示屏幕的颜色分辨率(比特每像素)。 |
updateInterval | 设置或返回屏幕的刷新率。 |
width | 返回显示器屏幕的宽度。 |
定时器
setInterval()和clearInterval()
setInterval(code, millisec, lang)
含义:按照设置的时间,周期性执行指定逻辑代码
参数:
- code : 要调用的函数或要执行的代码
- millisec : 定时器的周期时间,以毫秒为单位
- lang : 可选,javascript
返回值:设置当前定时器的标识(唯一,不可重复)
clearInterval(id_of_setinterval)
含义:取消定时器
参数:
- id_of_setinterval :指定清除的定时器标识
setTimeout()和clearTimeout()
setTimeout(code, millisec)
含义:按照设置的时间,向后延迟执行指定逻辑代码
参数:
- code - 设置延迟执行的指定逻辑代码
- millisec - 设置定时器的时间,单位为毫秒
返回值:设置当前定时器的标识(唯一,不可重复)
clearTimeout(id_of_settimeout)
含义:取消定时器
参数:
- id_of_settimeout :指定清除的定时器标识