浏览器

浏览器 BOM 基础知识

这篇文章带你轻松入门浏览器 BOM,掌握浏览器窗口、页面地址、定时器等实用知识。

🎯 引言

浏览器 BOM 是前端开发中非常重要的基础知识。学会 BOM,能帮你理解浏览器窗口和页面的相关操作,比如获得当前网页地址、操作浏览器历史记录、控制弹窗、管理定时器等功能。通过掌握这些内容,你可以让你的网页更加智能、更好地与浏览器环境进行交互,提升用户体验。


🌐 浏览器 BOM 是什么?

浏览器 BOM,英文全称是 Browser Object Model,指的是浏览器提供的一组对象,用来操作浏览器窗口和浏览器环境。它不属于 HTML 或 DOM 的一部分,但和网页的运行环境息息相关。

简单来说,BOM 就像浏览器给开发者准备的“遥控器”,让你可以控制浏览器的窗口、地址栏、浏览历史、定时器等。


🧭 BOM 的核心对象——window

浏览器中的所有 BOM 功能,都是挂载在 window 对象上的。

举个例子:

<!DOCTYPE html>
<html>
    <head>
        <title>BOM 示例</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                line-height: 1.6;
                padding: 20px;
            }
            pre {
                background: #f4f4f4;
                padding: 10px;
                border-radius: 5px;
                overflow-x: auto;
            }
        </style>
    </head>
    <body>
        <h2>查看当前页面标题</h2>
        <button onclick="alert(window.document.title)">点击显示页面标题</button>
    </body>
</html>

这里的 window.document.title 就是通过 window 访问当前页面的标题。实际上,我们写 document.title 也是可以的,浏览器会默认帮我们加个 window.


🌍 常用 BOM 对象和属性介绍

1. location —— 获取和设置 URL 地址

window.location 是一个很重要的对象,它包含了当前网页的地址信息。你可以获得页面的 URL,也能用它跳转页面。

常用属性:

  • location.href:整个页面的 URL
  • location.hostname:域名,比如 www.example.com
  • location.pathname:路径,比如 /index.html
  • location.protocol:协议,比如 https:

示例:

console.log(location.href); // 输出完整URL
console.log(location.hostname); // 输出域名
console.log(location.pathname); // 输出路径

跳转页面:

// 跳转到百度
location.href = 'https://www.baidu.com';

2. history —— 浏览器历史记录

window.history 对象用来操作浏览器的历史记录,可以实现前进、后退、刷新等功能。

常用方法:

  • history.back():后退一页
  • history.forward():前进一页
  • history.go(n):跳转历史记录的第 n 页,n 可以是正数或负数

示例:

// 后退一页
history.back();

// 前进一页
history.forward();

// 跳转到前两页
history.go(-2);

3. alert、confirm、prompt —— 弹窗操作

这三个方法也是 BOM 的一部分,可以方便地与用户进行交互。

  • alert(message):弹出提示框
  • confirm(message):弹出确认框,返回 true 或 false
  • prompt(message, default):弹出输入框,返回输入的内容

示例:

alert('欢迎光临!');

if (confirm('你确定离开吗?')) {
    alert('再见!');
}

let name = prompt('请输入你的名字', '张三');
alert('你好,' + name);

4. navigator —— 浏览器信息

window.navigator 对象包含了浏览器的相关信息,比如浏览器名称、版本、操作系统等。

示例:

console.log('浏览器名称:' + navigator.appName);
console.log('浏览器版本:' + navigator.appVersion);
console.log('操作系统:' + navigator.platform);

5. screen —— 屏幕信息

window.screen 对象包含了用户屏幕的分辨率、宽高等信息。

示例:

console.log('屏幕宽度:' + screen.width);
console.log('屏幕高度:' + screen.height);
console.log('可用宽度:' + screen.availWidth);
console.log('可用高度:' + screen.availHeight);

⏰ BOM 定时器:setTimeout 和 setInterval

在网页开发中,时不时需要做一些延迟操作或重复执行任务,BOM 给我们提供了两个非常实用的定时器函数:

  • setTimeout(fn, delay):延迟执行一次函数
  • setInterval(fn, interval):每隔指定时间执行函数

示例:

// 2秒后弹窗提醒
setTimeout(function () {
    alert('2秒到了!');
}, 2000);

// 每隔1秒打印当前时间
setInterval(function () {
    console.log(new Date().toLocaleTimeString());
}, 1000);
使用定时器时,记得配合 clearTimeoutclearInterval 来取消定时任务,避免造成不必要的性能浪费或内存泄露。

🧾 小节总结

  • BOM 是浏览器对象模型,主要通过 window 操作浏览器环境,比如地址栏、历史记录、弹窗等。
  • 常用 BOM 对象有 locationhistorynavigatorscreen,以及弹窗方法 alertconfirmprompt
  • 定时器 setTimeoutsetInterval 方便实现延迟执行和周期任务,是前端开发中不可或缺的工具。

❓ 知识问答(Q&A)

Q:BOM 是什么,它和 DOM 有什么区别?

A:BOM(浏览器对象模型)是浏览器提供的操作浏览器窗口和环境的接口,主要是通过 window 对象,负责浏览器相关操作。DOM 是文档对象模型,专注于操作网页的内容和结构。两者关注点不同,但经常一起使用。

Q:如何通过 BOM 实现页面跳转?

A:可以通过设置 window.location.href 属性为新的 URL 来实现页面跳转,比如 location.href = "https://www.baidu.com";

Q:什么情况下会用到 setInterval

A:当你想让某个操作每隔固定时间重复执行时,比如每秒更新一次时钟,或者轮播图自动切换,就会用到 setInterval


🧪 小练习

练习1:获取并显示当前网址的域名和路径

<!DOCTYPE html>
<html>
    <head>
        <title>BOM练习1</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                padding: 20px;
            }
            #info {
                margin-top: 20px;
                font-size: 16px;
                color: #333;
            }
        </style>
    </head>
    <body>
        <h3>显示当前网页的域名和路径</h3>
        <button id="btn">显示地址信息</button>
        <div id="info"></div>

        <script>
            document.getElementById('btn').onclick = function () {
                // 在这里写你的代码,显示网页域名和路径
            };
        </script>
    </body>
</html>

练习2:使用定时器实现每秒显示当前时间,并提供按钮停止计时

<!DOCTYPE html>
<html>
    <head>
        <title>BOM练习2</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                padding: 20px;
            }
            #time {
                font-size: 20px;
                color: #007acc;
            }
            button {
                margin-top: 10px;
                padding: 5px 10px;
                font-size: 16px;
            }
        </style>
    </head>
    <body>
        <h3>每秒显示当前时间,点击按钮停止</h3>
        <div id="time">--:--:--</div>
        <button id="stopBtn">停止显示时间</button>

        <script>
            var timer = setInterval(function () {
                var now = new Date();
                document.getElementById('time').textContent = now.toLocaleTimeString();
            }, 1000);

            // 在这里编写你的代码,停止时间显示。
        </script>
    </body>
</html>

🎉 恭喜你已经掌握了浏览器 BOM 的基本操作,window 对象的使用,location、history、navigator、screen,以及定时器 setTimeout 和 setInterval 的技能啦!继续练习,你会成为更棒的前端开发者!