浏览器模型BOM
本文最后更新于:8 个月前
BOM,(Browser Object Model),浏览器对象
浏览器模型BOM
一、window对象
window不仅充当全局作用域,而且表示浏览器窗口
现代浏览器 | 老版浏览器 | |
---|---|---|
窗口内高度(除去了菜单栏、工具栏等等) | innerHeight | document.documentElement.clientHeight 或 document.body.clientHeight |
窗口内宽度 | innerWidth | document.documentElement.clientWidth 或document.body.clientWidth |
窗口高度 | OuterHeight | |
窗口宽度 | outerWidth |
通过高度公式:var w = window.innerWidth || document.documentElement.clientWidt || document.body.clientWidth;
常用方法
方法 | 作用 | 用法示例 |
---|---|---|
window.alert | 弹出对话框,通知消息,只有一个确定按钮。参数只能是一个字符串 | alert(‘本条提示\n分成两行’) |
window.prompt | 弹出对话框,要求输入信息,有“确定”、“取消”两个按钮,用来获取用户输入 参数一:提示文字,参数二:默认值 |
var result = prompt(‘年龄?’,25) |
window.confirm | 弹出对话框,有“确定”、“取消”两个按钮,用来征询用户是否同意 | var result = confirm(‘你最近好吗?’) |
二、Navigator、Screen对象
Navigator
记录浏览器的信息,常用属性如下:
字段 | 说明 | 示例 |
---|---|---|
navigator.appName | 浏览器名称 | ‘Netscape’(网景公司名称) |
navigator.appCodeName | 应用程序代码名称 | ‘Mozilla’(现在是一个社区名称) |
navigator.appVersion | 浏览器版本 | ’5.0‘ |
navigator.platform | 操作系统类型 | ‘Win32’ |
navigator.language | 浏览器设置的语言 | ‘zh-CN’ |
navigator.userAgent[1] | 浏览器设定的User-Agent 字符串,用户代理 |
|
navigator.cookieEnabled | cookie 是否已启用 | true / false |
navigator.product | 引擎名称(内核) | ‘Gecko’ |
navigator.onLine | 浏览器是否在线 | true |
[1]: User-Agent 用户代理,是Http协议的一部分,属于http头部的组成部分。网站服务器通过它来识别用户使用的 操作系统版本、CPU类型、浏览器版本等信息,
Screen
Screen 对象表示当前窗口所在的屏幕,提供显示设备的信息
screen.width | 屏幕宽度 |
---|---|
screen.availWidth | 可用宽度 |
screen.height | 屏幕高度 |
availHeight | 可用高度 |
screen.colorDepth | 色深,颜色的比特数 |
screen.pixelDepth | 像素深度,对于现代计算机,颜色深度和像素深度是相等的 |
三、History对象
window.history
属性指向 History 对象,它表示当前窗口的浏览历史。History 对象保存了当前窗口访问过的所有页面网址。如果 URL 的锚点值变了,会在 History 对象创建一条浏览记录
属性
属性 | |
---|---|
length | 当前窗口访问过的网址数量(包括当前网页) |
state | History 堆栈最上层的状态值 |
方法
方法 | |
---|---|
back() | 移动到上一个网址,等同于点击浏览器的后退键,第一个网页无效 |
forward() | 移动到下一个网址,等同于点击浏览器的前进键,最后一个网页无效 |
go() | 接受一个整数作为参数,以当前网址为基准,移动到参数指定的网址,如go(1) 、go(-1) |
pushState(state, title, url) | 用于在历史中添加一条记录 |
replaceState(state, title, url) | 修改 History 对象的当前记录 |
1 |
|
popState事件
每当同一个文档的浏览历史(即history
对象)出现变化时,就会触发popstate
事件,back()、forward()、go()方法会触发该事件(另外2个方法不触发)。popState用于指定回调函数
1 |
|
参考文章:浏览器模型 - History 对象 - 《阮一峰 JavaScript 教程》 - 书栈网 · BookStack
四、Location对象
Location
对象是浏览器提供的原生对象,提供 URL 相关的信息和操作方法。通过window.location
和document.location
属性,可以拿到这个对象。
属性
href | 整个url | http://user:passwd@www.example.com:4097/path/a.html?x=111#part1 |
---|---|---|
protocol | URL协议,包括冒号 | http: |
host | 主机 | www.example.com:4097 |
hostname | 主机名,不含端口 | www.example.com |
port | 端口 | 4097 |
pathname | url的路径部分,从/ 开始 |
/path/a.html |
search | 查询字符串,从? 开始 |
?x=11 |
hash | 锚点部分,从# 开始 |
#part1 |
origin(只读) | 协议、主机名+端口 | http://user:passwd@www.example.com:4097 |
username | 域名前面的用户名 | user |
password | 域名前面的密码 | passwd |
可以发现,Location对象属性,与URL的组成紧密相关
除了origin属性是只读的,其它属性都可读写。修改href,浏览器会立即跳转到新地址,这个特性常常用于滚动到新锚点
1 |
|
另外,Location.href
属性是浏览器唯一允许跨域写入的属性,即非同源的窗口可以改写另一个窗口(比如子窗口与父窗口)的Location.href
属性,导致后者的网址跳转。Location
的其他属性都不允许跨域写入。
方法
assign() | 接受一个 URL 字符串作为参数,使得浏览器立刻跳转到新的 URL |
---|---|
replace() | 接受一个 URL 字符串作为参数,使得浏览器立刻跳转到新的 URL,会在History中删除原来的地址 |
reload() | 浏览器重新加载当前网址,相当于刷新。接受一个boolean参数,true-从服务器请求加载,false-从本地缓存加载 |
toString() | 返回整个 URL 字符串 |
五、Blob对象
Binary Large Object (二进制大型对象)。表示一个二进制文件的数据内容,用于操作二进制文件,通常用来读写文件,如图片
Blob()构造函数
1 |
|
- 参数一,数组,成员是字符串或二进制对象,表示新生成的
Blob
实例对象的内容 - 参数二,可选,是一个配置对象,目前只有一个属性
type
,它的值是一个字符串,表示数据的 MIME 类型,默认是空字符串
1 |
|
实例属性 | |
---|---|
size | 数据大小 |
type | 数据类型 |
实例方法 | |
---|---|
slice(start, end, contentType) | 拷贝原来的数据,返回一个新的Blob实例,3个参数都是可选的 |
六、File、FileList、FIleReader
1、File对象
代表一个文件,用来读写文件信息,继承自Blob
构造函数
1 |
|
- array:一个数组,成员可以是二进制对象或字符串,表示文件的内容。
- name:字符串,表示文件名或文件路径。
- options:配置对象,设置实例的属性。该参数可选。
- type,字符串类型,表示实例的 MIME 类型,默认为空字符串
- lastModified,时间戳,默认为Date.now(),表示上次修改的时间
扩展:MIME
MIME 类型 - HTTP | MDN (mozilla.org)
实例属性
- File.lastModified:最后修改时间
- File.name:文件名或文件路径
- File.size:文件大小(单位字节)
- File.type:文件的 MIME 类型
File 对象没有自己的实例方法,由于继承了 Blob 对象,因此可以使用 Blob 的实例方法slice()
2、FileList对象
类似数组的对象,代表一组选中的文件,每个成员都是一个 File 实例,主要出现在两种场合:
- 文件控件节点(
<input type="file">
)的files
属性,返回一个 FileList 实例。 - 拖拉一组文件时,目标区的
DataTransfer.files
属性,返回一个 FileList 实例。
3、FileReader对象
用于读取 File 对象或 Blob 对象所包含的文件内容
1 |
|
实例属性 | |
---|---|
result | 读取完成后的文件内容,有可能是字符串,也可能是一个 ArrayBuffer 实例 |
readyState | 表示读取文件时的当前状态。一共有三种可能的状态0 表示尚未加载任何数据,1 表示数据正在加载,2 表示加载完成 |
监听事件属性 | |
---|---|
onabort | abort 事件(用户终止读取操作)的监听函数 |
onloadstart | |
onloadend | |
onload | load 事件(读取操作完成)的监听函数,通常在这个函数里面使用result 属性,拿到文件内容 |
onerror | error 事件(读取错误)的监听函数 |
onprogress | progress 事件(读取操作进行中)的监听函数 |
实例方法 | |
---|---|
abort() | 终止读取操作,readyState 属性将变成2 |
readAsArrayBuffer() | 以 ArrayBuffer 的格式读取文件,读取完成后result 属性将返回一个 ArrayBuffer 实例 |
readAsBinaryString() | 读取完成后,result 属性将返回原始的二进制字符串 |
readAsDataURL() | 读取完成后,result 属性将返回一个 Data URL 格式(Base64 编码)的字符串对于图片文件,这个字符串可以作为img标签的src属性。但这个字符串不能直接作为Base64解码 |
readAsText() | 读取完成后,result 属性将返回文件内容的文本字符串。该方法的第一个参数是代表文件的 Blob 实例,第二个参数是可选的,表示文本编码,默认为 UTF-8 |
实例:读取文本文件
1 |
|