什么是浏览器对象模型(BOM, Browser Object Model)

什么是浏览器对象模型(BOM, Browser Object Model)

BOM 提供了与浏览器窗口交互的接口,使 JavaScript 可以与浏览器进行通信。以下是 BOM 的主要组成部分:

  1. window 对象(最顶层对象)
javascript 复制代码
// 窗口操作
window.innerHeight  // 浏览器窗口的内部高度
window.innerWidth   // 浏览器窗口的内部宽度
window.open()       // 打开新窗口
window.close()      // 关闭当前窗口
window.moveTo()     // 移动当前窗口
window.resizeTo()   // 调整窗口大小
  1. location 对象(URL 信息)
javascript 复制代码
// 当前页面的 URL 信息
location.href      // 完整的 URL
location.hostname  // 主机名
location.pathname  // 路径部分
location.search    // 查询字符串
location.hash      // 锚点
  1. history 对象(浏览历史)
javascript 复制代码
history.back()     // 后退
history.forward()  // 前进
history.go(-2)     // 后退两页
  1. navigator 对象(浏览器信息)
javascript 复制代码
navigator.userAgent    // 浏览器用户代理字符串
navigator.platform     // 操作系统平台
navigator.language     // 浏览器语言
  1. screen 对象(屏幕信息)
javascript 复制代码
screen.width          // 屏幕宽度
screen.height         // 屏幕高度
screen.availWidth     // 可用宽度
screen.availHeight    // 可用高度
  1. document 对象(虽然是 DOM 的一部分,但也是 BOM 的一部分)
javascript 复制代码
document.title        // 文档标题
document.URL         // 文档的完整 URL

BOM 与 DOM 的主要区别:

  • DOM: 文档对象模型,处理网页内容
  • BOM: 浏览器对象模型,处理浏览器窗口和框架

实际应用示例:

javascript 复制代码
// 检测浏览器类型和版本
function getBrowser() {
    const ua = navigator.userAgent;
    if (ua.includes('Chrome')) {
        return 'Chrome';
    } else if (ua.includes('Firefox')) {
        return 'Firefox';
    } else if (ua.includes('Safari')) {
        return 'Safari';
    }
    return 'Unknown';
}

// 页面跳转
function redirect(url) {
    location.href = url;
}

// 调整窗口大小
function resizeWindow(width, height) {
    window.resizeTo(width, height);
}

// 获取URL参数
function getQueryParam(param) {
    const urlParams = new URLSearchParams(location.search);
    return urlParams.get(param);
}
相关推荐
hfdz_004227 分钟前
BUCK电路原理和设计
电源·硬件设计·1024程序员节
cynicme27 分钟前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
Bony-1 小时前
Go语言完全学习指南 - 从基础到精通------语言基础篇
服务器·开发语言·golang
青云交1 小时前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu2 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
fl1768312 小时前
基于python的天气预报系统设计和可视化数据分析源码+报告
开发语言·python·数据分析
Lei活在当下2 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
ACP广源盛139246256732 小时前
(ACP广源盛)GSV6172---MIPI/LVDS 信号转换为 Type-C/DisplayPort 1.4/HDMI 2.0 并集成嵌入式 MCU
c语言·开发语言·单片机·嵌入式硬件·音视频
hazy1k2 小时前
51单片机基础-IO扩展(并转串 74HC165)
stm32·单片机·嵌入式硬件·fpga开发·51单片机·1024程序员节
不穿格子的程序员3 小时前
从零开始刷算法-栈-括号匹配
java·开发语言·