BOM 浏览器对象模型
BOM
(Browser Object Model,浏览器对象模型)提供了通过 JavaScript
访问和控制浏览器窗口(window)、显示器(screen)与浏览历史(history)等对象的接口。
BOM
并非 W3C 的标准,而是在各家浏览器中逐渐形成的一致性接口。
BOM
可以看做是 Browser API 的一部分。
BOM 对象
###1.Window
window 对象代表了一个浏览器窗口(标签)或一个嵌入到页面中的框架(iframe)。 参考:WebPlatform/dom/window 属性 ###applicationCache 返回 ApplicationCache 对象的引用。 ###frames 以数组形式返回页面中的所有框架。 ###closed 窗口是否被关闭。 属性值: 1.true 已关闭 2.false 未关闭 ###console 返回 Console 对象的引用。 ###defalutStatus 读取或设置状态栏文本。 ###document 返回 Document 对象的只读引用。 ###frameElement 获取当前框架窗口的 frame 引用。 ###hidden 获取窗口是否隐藏。 ###history 返回 History 对象的只读引用。 ###indexedDB 获取 IDBFactory 对象的引用。 ###innerHeight 返回窗口文档显示区的高度,单位为像素。 ###innerWidth 返回窗口文档显示区的宽度,单位为像素。 注:innerHeight 和 innerWidth 不包含菜单栏、工具栏及滚动条的尺寸。 ###length 获取窗口中的框架数量。 ###location 返回 Location 对象的引用。 ###localStorage 获取 LocalStorage 对象的引用。 ###maxConnectionsPerServer 获取浏览器与每个服务器之间的最大连接数。 ###name 设置或返回窗口标题。 ###navigator 返回 Navigator 对象的只读引用。 ###offscreenBuffering 设置或获取是否屏幕外渲染。 ###opener 返回创建当前窗口的父窗口的引用。 ###outerHeight 返回窗口的外边缘高度。 ###outerWidth 返回窗口的外边缘宽度。 ###pageXOffset 设置或返回当前页面左侧距离文档显示区左侧的距离。 ###pageYOffset 设置或返回当前页面顶部距文档显示区顶部的距离。 ###parent 返回父窗口的引用。 ###screen 返回 Screen 对象的只读引用。 ###self 返回当前窗口的引用,相当于 window。 ###status 设置或读取状态栏的文本信息。 ###top 返回最顶层父窗口的引用。 ###screenLeft/screenX 返回窗口左边缘距显示器左边缘的距离。 ###screenTop/screenY 返回窗口上边缘距显示器上边缘的距离。 ###XMLHttpRequest 获取 XMLHttpRequest 对象的引用。 方法 ###alert() 弹出警告对话框。 语法: window.alert("msg"); 参数: 1.msg 警告信息,支持转义字符 弹出的警告对话框中会显示警告信息,窗口底部有一个[确定]按钮。 ###blur() 取消当前窗口的焦点。 语法: window.blur(); ###clearInterval() 取消定时器。 语法: window.clearInterval(interval_id); 参数: 1.interval_id setInterval() 方法返回的定时器 ID ###clearTimeout() 取消计时器。 语法: window.clearTimeout(timeout_id); 参数: 1.timeout_id setTimeout() 方法返回的计时器 ID ###close() 关闭当前窗口。 语法: window.close(); ###confirm() 弹出确认对话框。 语法: window.confirm("msg"); 参数: 1.msg 提示信息,支持转义字符 弹出的确认对话框中会显示提示信息,窗口底部有[确定]和[取消]按钮。 返回值: 1.true 用户点击了[确定]按钮 2.false 用户点击了[取消]按钮 ###focus() 使当前窗口获取焦点。 语法: window.focus(); ###getComputedStyle() 获取对象或伪对象的 CSSStyleDeclaration 属性。 语法: window.getComputedStyle(elmt,pseudoName); 参数: 1.elmt 目标对象 2.pseudoName 伪元素(可选) 返回值: 1.CSSStyleDeclaration 对象 ###getSelection() 获取当前的 HTMLSelection 对象。 ###item() 取得对象中指定的子对象。 语法: obj.item(name,index); 参数: 1.name name/id 属性值或索引值(从 0 开始) 2.index 索引值 ###matchMedia() 获取 MediaQueryList 对象。 语法: obj.matchMedia(); ###moveBy() 根据指定的偏移量移动窗口。 语法: window.moveBy(x,y); 参数: 1.x 横向移动距离(向右为正) 2.y 纵向移动距离(向下为正) ###moveTo() 将窗口移动到指定位置。 语法: window.moveTo(x,y); 参数: 1.x 目标点横坐标 2.y 目标点纵坐标 ###open() 打开新的窗口,或修改已存在的窗口。 语法: window.open(url,name,features,replace); 参数: 1.url 要在新窗口中载入的 URL 2.name 新窗口的名称(标识符) 3.features 新窗口特征列表(参考下面的列表,多个值之间使用 , 分隔) 4.replace 是否替换窗口的历史记录条目(true:替换历史记录;false:新建历史记录) ####窗口特征列表 channelmode ?? yes/1 启用 no/0 关闭 directories ?? yes/1 启用 no/0 关闭 fullscreen ?? yes/1 启用 no/0 关闭 height 文档显示区高度 px 像素值 width 文档显示区宽度 px 像素值 left 窗口 x 坐标 px 像素值 top 窗口 y 坐标 px 像素值 location ?? yes/1 启用 no/0 关闭 menubar ?? yes/1 启用 no/0 关闭 resizable ?? yes/1 启用 no/0 关闭 scrollbars ?? yes/1 启用 no/0 关闭 status ?? yes/1 启用 no/0 关闭 titlebar ?? yes/1 启用 no/0 关闭 toolbar ?? yes/1 启用 no/0 关闭 ####实际表现(Chrome 27): 新建标签: window.open(); window.open("","id"); 新标签中打开页面: window.open("http://www.w3school.com.cn"); window.open("http://www.w3school.com.cn","id"); window.open("http://www.w3school.com.cn","id",""); 打开新窗口,应用位置和尺寸属性: window.open("http://www.w3school.com.cn","id","left=100,top=100,width=400,height=400"); 其他属性无效。 ###print() 打印当前页面(等同于执行浏览器的打印功能)。 语法: window.print(); ###prompt() 显示输入对话框。 语法: window.prompt(text,default); 参数: 1.text 提示信息,支持转义字符 2.default 默认文本 弹出的输入对话框中会显示提示信息,窗口中间有一个文本框,底部有[确定]和[取消]按钮。 返回值: 1.文本框中的文本 用户点击了[确定]按钮 2.null 用户点击了[取消]按钮 ###resizeBy() 根据指定的像素调节窗口大小。 语法: window.resizeBy(x,y); 参数: 1.x 窗口宽度变化值 2.y 窗口高度变化值 x、y 为像素数。当其值 >0 时,窗口增大;< 0 时,窗口缩小。 ###resizeTo() 调节窗口大小到指定的尺寸。 语法: window.resizeTo(x,y); 参数: 1.x 窗口宽度 2.y 窗口高度 ###scrollBy() 滚动当前页面。 语法: window.scrollBy(x,y); 参数: 1.x 横向滚动距离(向右为正) 2.y 纵向滚动距离(向下为正) ###scrollTo()/scroll() 滚动当前页面到指定位置。 语法: window.scrollTo(x,y); 参数: 1.x 目标位置横坐标 2.y 目标位置纵坐标 ###setInterval() 定义定时器。 语法: window.setInterval("func",millisec); 参数: 1.func 定时调用的函数名称(字符串格式) 2.millisec 定时器周期(毫秒) func 函数会在设定的时间间隔后被 重复执行 ,直到使用 clearInterval(interval_id) 清除了该定时器。 返回值: interval_id 定时器的 ID ###setTimeout() 定义计时器。 语法: window.setTimeout("func",millisec); 参数: 1.func 延迟调用的函数名称(字符串格式) 2.millisec 计时器时长(毫秒) func 函数会在设定的时间后被 执行一次 ,可以使用 clearTimeout(timeout_id) 清除该计时器。 返回值: timeout_id 计时器的 ID
###2.Navigator
navigator
对象包含了浏览器的相关信息。
属性
plugins
以数组形式返回页面中的嵌入对象。
appCodeName
浏览器代码名称。
appMinorVersion
浏览器的次要版本号。
appName
浏览器名称。
appVersion
包括浏览器的平台及版本信息。
browserLangauge
浏览器的语言。
cookieEnabled
是否已启用 cookie。
cpuClass
CPU 信息。
onLine
在线模式/脱机模式。
platform
运行平台。
systemLangauge
浏览器所在系统使用的语言。
userAnget
用户代理信息。
userLangauge
浏览器所在系统使用的语言。
方法
javaEnabled()
检测浏览器是否启用了 Java。
语法:
navigator.javaEnabled();
返回值:
1.true 已启用
2.false 已禁用
taintEnabled()
检测浏览器是否启用了 data tainting。
语法:
navigator.taintEnabled();
返回值:
1.true 已启用
2.false 已禁用
###3.Screen
screen
对象包含了显示器屏幕的相关信息。
属性
###availHeight
返回屏幕窗口显示区域的高度(不高扩任务栏)。
###availWidth
返回屏幕窗口显示区域的宽度(不高扩任务栏)。
###bufferDepth
设置或返回调色板比特值。
###colorDepth
设置或返回设备或缓冲器的调色板比特值。
###deviceXDPI
返回屏幕水平 DPI(每英寸点数)。
###deviceYDPI
返回屏幕垂直 DPI(每英寸点数)。
###fontSmoothingEnabled
返回是否启用了字体平滑。
###height
返回屏幕高度。
###localXDPI
返回屏幕水平 DPI(每英寸点数)。
###localYDPI
返回屏幕垂直 DPI(每英寸点数)。
###pixelDepth
返回屏幕的颜色分辨率。
###updateInterval
设置或返回屏幕的刷新频率。
###width
返回屏幕宽度。
###4.History
history
对象代表了浏览历史。
属性
###length
历史列表的长度(浏览过的页面数量)。
方法
###back()
加载历史列表中的前一个页面(后退一步)。
语法:
history.back();
###forward()
加载历史列表中的下一个页面(前进一步)。
语法:
history.forward();
###go()
加载历史列表中指定的页面。
语法:
history.go(n);
参数:
1.n 要加载的页面与当前页面的相对距离(0 代表当前页面;-1 代表上一个页面)
###5.Location
location
对象包含了当前页面 URL 的相关信息。
属性
###hash
设置或返回当前 URL 中的锚信息(从 # 开始的部分)。
###host
设置或返回当前 URL 中的主机名和端口号。
###hostname
设置或返回当前 URL 中的主机名。
###href
设置或返回当前 URL。
###pathname
设置或返回当前 URL 中的路径部分。
###port
设置或返回当前 URL 中的端口号。
###protocol
设置或返回当前 URL 的协议。
###search
设置或返回当前 URL 中的查询信息(以 ? 开始的部分)。
方法
###assign()
加载新页面。
语法:
location.assigh(url);
参数:
1.url 要加载的页面 URL
###reload()
重新加载当前页面。
语法:
location.reload(force);
参数:
1.force 是否强制重新加载(从服务器重新加载,忽略本地缓存)。true 强制重新加载;false 重新加载。该参数可选,默认为 false
###replace()
加载新页面,并替换当前页面(不产生新的历史记录)。
语法:
location.assigh(url);
参数:
1.url 要加载的页面 URL