BOM
BOM 是浏览器对象模型(Browser Object Model)的缩写,它提供了与浏览器窗口进行交互的对象。BOM 的核心是 window
对象,它代表浏览器窗口,同时也是 JavaScript 中的全局对象。
window 对象
window
对象是 BOM 的核心,它代表整个浏览器窗口,包括标题栏、菜单栏、工具栏、地址栏和内容区域等所有部分。在浏览器中,所有的全局变量和函数都是 window
对象的属性。
常用属性
window.innerHeight
:浏览器窗口的内部高度window.innerWidth
:浏览器窗口的内部宽度window.outerHeight
:浏览器窗口的外部高度window.outerWidth
:浏览器窗口的外部宽度window.screenX
:浏览器窗口左上角顶点相对于屏幕左上角的 X 坐标window.screenY
:浏览器窗口左上角顶点相对于屏幕左上角的 Y 坐标
常用方法
window.alert()
:显示警告框window.confirm()
:显示确认框window.prompt()
:显示输入框window.open()
:打开新窗口window.close()
:关闭当前窗口window.scrollTo()
:滚动到指定位置window.scrollBy()
:相对当前位置滚动
location 对象
location
对象对应浏览器的地址栏,包含了当前 URL 的信息。通过修改 location 对象的属性,可以实现页面的跳转和刷新。
常用属性
假设当前页面 URL 为:https://www.example.com:8080/path/to/page?name=evan&age=25#section1
location.href
:完整的 URL,值为"https://www.example.com:8080/path/to/page?name=evan&age=25#section1"
location.protocol
:协议(如 http: 或 https:),值为"https:"
location.host
:主机名和端口,值为"www.example.com:8080"
location.hostname
:主机名,值为"www.example.com"
location.port
:端口号,值为"8080"
location.pathname
:路径部分,值为"/path/to/page"
location.search
:查询字符串部分(包含问号),值为"?name=evan&age=25"
location.hash
:锚点部分(包含井号),值为"#section1"
常用方法
location.reload()
:重新加载当前页面location.assign()
:加载新页面location.replace()
:用新页面替换当前页面
history 对象
history
对象对应浏览器的前进/后退功能,包含了用户访问过的页面历史记录。可以通过浏览器的前进/后退按钮或快捷键(如 Alt + ←/→)来触发这些功能。
常用方法
history.back()
:后退一步history.forward()
:前进一步history.go()
:跳转到指定页面history.pushState()
:添加新的历史记录history.replaceState()
:替换当前历史记录
navigator 对象
navigator
对象包含了浏览器本身的信息,这些信息通常可以在浏览器的"关于"页面中看到,比如浏览器版本、名称、运行平台等。
常用属性
navigator.userAgent
:浏览器的 User-Agent 字符串navigator.platform
:运行浏览器的操作系统平台navigator.language
:浏览器的主语言navigator.cookieEnabled
:是否启用 cookie
screen 对象
screen
对象对应用户的显示器屏幕,包含了屏幕的分辨率、颜色深度等硬件层面的信息。这些信息与浏览器窗口大小无关,而是反映整个显示器的特性。
常用属性
screen.width
:屏幕宽度screen.height
:屏幕高度screen.colorDepth
:颜色深度screen.pixelDepth
:像素深度
使用示例
// 获取窗口大小
console.log(`窗口宽度:${window.innerWidth}`);
console.log(`窗口高度:${window.innerHeight}`);
// 获取当前 URL
console.log(`当前 URL:${location.href}`);
// 页面跳转
location.href = "https://www.example.com";
// 历史记录操作
history.back(); // 后退
history.forward(); // 前进
// 获取浏览器信息
console.log(`浏览器:${navigator.userAgent}`);
console.log(`平台:${navigator.platform}`);
// 获取屏幕信息
console.log(`屏幕宽度:${screen.width}`);
console.log(`屏幕高度:${screen.height}`);
注意事项
- BOM 没有统一的标准,不同浏览器可能会有差异
- 某些 BOM 方法可能会被浏览器的安全策略阻止
- 在使用
window.open()
等方法时要注意跨域限制 - 建议使用现代的 Web API 替代一些过时的 BOM 方法