【JavaScript高级程序设计】第8章(浏览器对象模型BOM)
8. BOM
五大BOM对象:
- window
- location
- screen
- history
- navigator
8.1 window对象
- BOM的核心对象就是
window
- JavaScript访问浏览器窗口的一个接口
- ECMAScript规定的Global对象
- 全局作用域中定义的变量和函数都会成为
window
对象的属性和方法- 删除问题
var
定义全局变量不能通过delete
操作符删除- 而直接在window对象上定义的属性可以
- 因为
var
添加的window属性的[[configurable]]
特性的值为false
- 未定义问题
- 如果一个变量未定义,全局访问会报错
- 如果以window属性访问则返回undefined
- 删除问题
var name = "hello world";
window.anotherName = "hello javascript";
delete window.name; // false 无法删除
delete window.anotherName; // true
console.log(anyWord); // not defined
console.log(window.anyWord); // undefined
- 窗口位置
- screenTop & screenLeft
- 窗口大小
- innerWidth,innerHeight & outerWidth, outerHeight
- clientHeight, clientWidth
- 导航和打开窗口
window.open(url)
- 第二个参数可以是窗口或框架名
- _self, _parent, _top, _blank
- 第三个参数是逗号分隔的名值对儿
"height=400,width=400,top=100,left=100,resizable=yes"
- 间歇调用和超时调用
setTimeout
setInterval
- 接收要执行的字符串,在全局作用域中执行
- 系统对话框
alert
confirm
prompt
find
print
8.2 location对象
location
对象- window.location和document.location引用的是同一个对象
hash
host
href
pathname
hostname
port
protocol
search
- “?language=javascript&number=4” 解析url字符串得到参数
- 位置操作
window.location = 'http://www.baidu.com'
赋值字符串,返回对象,神奇!window.location.href = "http://www.baidu.com"
- 每次修改location的属性(除hansh外),页面都会重新加载URL
- 浏览器会计入历史记录
replace
不会记入历史记录reload
重新加载当前页面reload()
从缓存加载reload(true)
从服务器重新加载
8.3 navigator对象
navigator
对象- 浏览器、电脑、cpu等客户端信息
- 插件 plugins
- 注册处理程序 registerContentHandler
8.4 screen对象
screen
对象- availHeight
8.5 history对象
history
对象history.go(-1)
back()
和forward()
length
检测是否是用户历史记录中的第一个页面length == 0