8. BOM

五大BOM对象:

  1. window
  2. location
  3. screen
  4. history
  5. 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