⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

JS 浏览器BOM

学习 window/location/history/navigator · 难度:进阶 · +15XP

JavaScript BOM 浏览器对象模型

BOM(Browser Object Model,浏览器对象模型)是浏览器提供的一组对象,允许 JavaScript 与浏览器窗口进行交互。BOM 的核心是 window 对象,它既是全局对象也是浏览器窗口的抽象表示。常见的 BOM 对象包括 locationnavigatorscreenhistory 等。

Window 对象核心方法

方法/属性说明示例
window.innerWidth视口宽度(含滚动条)1920
window.innerHeight视口高度937
window.scrollTo(x, y)滚动到指定位置scrollTo(0, 500)
window.open(url)打开新窗口open("https://example.com")
window.alert(msg)弹出警告框alert("Hello")
window.confirm(msg)确认对话框(返回布尔值)confirm("确定?")
window.prompt(msg, def)输入对话框prompt("输入名字")

Location 对象:URL 操作

  1. location.href 获取或设置完整 URL
  2. location.reload() 重新加载页面
  3. location.replace(url) 替换当前页面(不产生历史记录)
// location 对象常用属性和方法
console.log(location.href);     // "https://example.com/path?key=val#hash"
console.log(location.host);     // "example.com"
console.log(location.hostname); // "example.com"
console.log(location.pathname); // "/path"
console.log(location.search);   // "?key=val"
console.log(location.hash);     // "#hash"
console.log(location.protocol); // "https:"
console.log(location.origin);   // "https://example.com"

// 获取查询参数 const params = new URLSearchParams(location.search); console.log(params.get("key")); // "val"

// 页面跳转的几种方式 location.href = "/new-page"; // 跳转(可返回) location.assign("/new-page"); // 同上 location.replace("/new-page"); // 替换当前页(不可返回) location.reload(); // 刷新页面

History 与 Navigator

// History 对象:浏览器历史记录管理
history.back();      // 后退
history.forward();   // 前进
history.go(-2);      // 后退两页
history.pushState({ page: 1 }, "", "/page/1"); // 添加历史记录(SPA 路由)
history.replaceState({ page: 2 }, "", "/page/2"); // 替换当前记录

// 监听历史记录变化(用户点击前进/后退按钮) window.onpopstate = (event) => { console.log("状态:", event.state); };

// Navigator 对象:浏览器和设备信息 console.log(navigator.userAgent); // 用户代理字符串 console.log(navigator.language); // "zh-CN" console.log(navigator.onLine); // 是否在线 console.log(navigator.cookieEnabled); // Cookie 是否启用 console.log(navigator.hardwareConcurrency); // CPU 核心数

// 监听网络状态变化 window.addEventListener("online", () => console.log("网络已连接")); window.addEventListener("offline", () => console.log("网络已断开"));

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0