JavaScript中DOM和BOM的区别与用处详解

 更新时间:2024年09月23日 14:12:02   作者:岁月宁静  
这篇文章主要介绍了JavaScript中DOM和BOM的区别与用处,DOM和BOM是前端开发中常用的两个概念,它们分别表示不同的对象模型,用于操作浏览器的不同部分,了解它们的区别和用处,有助于在前端开发中灵活使用 JavaScript 操作页面和浏览器,需要的朋友可以参考下

1. 概念与定义

  • DOM (Document Object Model) : 文档对象模型,它是一种标准的编程接口,表示 HTML 或 XML 文档的结构,使得开发者可以通过 JavaScript 动态地访问和操作文档的内容、结构和样式。DOM 将文档表示为节点树,其中每个节点都表示文档的一部分,如元素、属性、文本等。
  • BOM (Browser Object Model) : 浏览器对象模型,它是指由浏览器提供的一组对象,用于与浏览器窗口进行交互。BOM 并不局限于操作文档本身,而是可以操作浏览器的其他功能,如控制浏览器窗口、导航历史、定位 URL 以及浏览器相关的信息等。

2. 区别

  • 操作对象:

    • DOM 操作的是文档结构,包括元素节点、文本节点、属性等。
    • BOM 操作的是浏览器窗口及其周边的功能,如导航、窗口大小、位置等。
  • 标准性:

    • DOM 是由 W3C 标准定义的,是跨浏览器的一致接口。
    • BOM 不是一个正式的标准,各个浏览器的实现可能有所不同。
  • 常用属性和方法:

    • DOM 常用方法有 getElementByIdquerySelectorappendChild 等,用于访问和操作 HTML 元素。
    • BOM 常用对象有 windownavigatorlocationhistory 等,用于与浏览器相关的操作。

3. 用处举例

DOM 的用处示例

  • 动态修改页面内容
 // 获取元素并修改其文本内容和样式
    let header = document.querySelector('.header')
    header.textContent = '欢迎来到我的网站'
    header.style.color = 'blue' // 修改文本颜色
    header.style.fontSize = '24px' // 修改字体大小

    // 修改元素的属性
    let link = document.querySelector('a')
    link.setAttribute('href', 'https://www.newlink.com') // 修改链接地址
    link.setAttribute('target', '_blank') // 在新窗口打开链接
  • 创建和插入新元素
  // 创建新的列表项元素
    let newItem = document.createElement('li')
    newItem.textContent = '新列表项'

    // 将新元素插入到现有的列表中
    let list = document.getElementById('myList')
    list.appendChild(newItem)

    // 在指定位置插入元素
    let anotherItem = document.createElement('li')
    anotherItem.textContent = '插入的新列表项'
    list.insertBefore(anotherItem, list.children[1]) // 在第二个子元素之前插入
  • 监听用户交互事件
// 为按钮添加点击事件监听器
let button = document.getElementById("submitButton");
button.addEventListener("click", function() {
    alert("按钮被点击了!");
});

BOM 的用处示例

控制浏览器窗口

  // 打开一个新的窗口并设置一些窗口属性
    let newWindow = window.open('https://www.example.com', '_blank', 'width=800,height=600')

    // 移动窗口到屏幕指定位置
    newWindow.moveTo(100, 100)

    // 调整窗口大小
    newWindow.resizeTo(500, 500)

    // 关闭窗口
    newWindow.close()

浏览器信息和导航

javascript
复制代码
// 获取浏览器的用户代理字符串
let userAgent = navigator.userAgent;
console.log("用户代理信息:", userAgent);

// 检测是否为移动设备
if (/Mobi|Android/i.test(userAgent)) {
    console.log("这是一个移动设备");
}

操作 URL 和导航

javascript
复制代码
// 获取当前页面的 URL
let currentUrl = window.location.href;
console.log("当前 URL:", currentUrl);

// 重定向到新的页面
window.location.href = "https://www.example.com";

浏览器信息和导航

 // 获取浏览器用户代理信息
    let userAgent = navigator.userAgent
    console.log('用户代理:', userAgent)

    // 检测是否为某个浏览器
    if (userAgent.indexOf('Chrome') > -1) {
        console.log('当前浏览器是 Chrome')
    }

    // 获取当前页面的 URL 信息
    console.log('当前 URL:', window.location.href)
    console.log('协议:', window.location.protocol)
    console.log('主机名:', window.location.hostname)
    console.log('路径名:', window.location.pathname)

    // 导航到新页面
    window.location.href = 'https://www.new-page.com'

    // 重载当前页面
    window.location.reload()

    // 浏览器历史记录操作
    window.history.back() // 返回上一页
    window.history.forward() // 前进到下一页

操作 localStorage 和 sessionStorag

// localStorage 持久存储数据(页面关闭后仍然存在)
localStorage.setItem("username", "JohnDoe");
let username = localStorage.getItem("username");
console.log("用户名:", username);

// 移除存储的数据
localStorage.removeItem("username");

// sessionStorage 临时存储数据(页面关闭后数据消失)
sessionStorage.setItem("sessionID", "123456");
let sessionID = sessionStorage.getItem("sessionID");
console.log("会话 ID:", sessionID);

// 清除所有 sessionStorage 数据
sessionStorage.clear();

定时器与计时器

// 设置定时器,每隔一秒执行一次
let count = 0;
let intervalID = setInterval(() => {
    console.log(`计时器执行次数: ${count}`);
    count++;
    if (count === 5) {
        clearInterval(intervalID); // 停止定时器
    }
}, 1000);

// 延时执行函数
setTimeout(() => {
    console.log("延时执行的代码");
}, 2000);

弹出对话框

// 提示框
alert("这是一个提示框!");

// 确认框
let confirmResult = confirm("你确定要删除这条记录吗?");
if (confirmResult) {
    console.log("用户点击了确认");
} else {
    console.log("用户点击了取消");
}

// 输入框
let userInput = prompt("请输入你的名字:", "匿名");
if (userInput !== null) {
    console.log(`你好,${userInput}`);
}

4. 总结

  • DOM 更关注文档内容的操作,适合用于创建动态内容、用户交互、表单验证等场景。
  • BOM 更侧重于浏览器窗口和外部环境的交互,如页面导航、窗口控制和浏览器信息获取等。

在实际开发中,DOM 和 BOM 往往结合使用,以实现更加丰富和复杂的功能。理解它们的区别和各自的用处,可以帮助开发者更好地处理页面和浏览器相关的任务。

以上就是JavaScript中DOM和BOM的区别与用处详解的详细内容,更多关于JavaScript DOM和BOM区别及用处的资料请关注脚本之家其它相关文章!

相关文章

  • Jquery代码实现图片轮播效果(一)

    Jquery代码实现图片轮播效果(一)

    经理交给我一个网站新闻资讯网页开发的活儿,对于我这样的java程序员,没有接触过网页设计这么高端的东东,该怎么搞呢,去度娘那搜索到不少结果,而且很大部分都是用jquery做的,于是根据自己的一些的理解,提供了这篇jquery轮播效果的讲解,有需要的朋友可以来参考下
    2015-08-08
  • JavaScript使用正则表达式获取全部分组内容的方法示例

    JavaScript使用正则表达式获取全部分组内容的方法示例

    这篇文章主要介绍了JavaScript使用正则表达式获取全部分组内容的方法,结合实例形式分析了javascript正则匹配的相关操作技巧,需要的朋友可以参考下
    2017-01-01
  • JavaScript监听和禁用浏览器回车事件实例

    JavaScript监听和禁用浏览器回车事件实例

    这篇文章主要介绍了JavaScript监听和禁用浏览器回车事件实例,本文直接给出示例代码,需要的朋友可以参考下
    2015-01-01
  • 原生js实现自由拖拽弹窗代码demo

    原生js实现自由拖拽弹窗代码demo

    这篇文章主要为大家详细介绍了原生js实现弹窗拖拽代码demo,以及在实现js弹窗拖拽效果需要注意的事项,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • JavaScript的兼容性与调试技巧

    JavaScript的兼容性与调试技巧

    可能在大家使用JavaScript效果时,会碰到在各个浏览器中页面的显示效果不同,甚至报错,这就是代码的兼容性问题。本文就是主要介绍JavaScript的兼容性与调试技巧,希望对大家有所帮助
    2016-11-11
  • Javascript 网页水印(非图片水印)实现代码

    Javascript 网页水印(非图片水印)实现代码

    在一些B/S结构的应用系统中,有很多页面是需要有水印的。常见的就是公文系统、合同系统等。
    2010-03-03
  • javascript 汉字转拼音实现代码

    javascript 汉字转拼音实现代码

    主要是提前定义了很多文字,这样的方法不是很是,如果库中没有这个词,是看不到相关信息的。
    2009-12-12
  • 微信小程序基于slider组件动态修改标签透明度的方法示例

    微信小程序基于slider组件动态修改标签透明度的方法示例

    这篇文章主要介绍了微信小程序基于slider组件动态修改标签透明度的方法,可通过slider组件拖动实现图片透明度的改变功能,涉及微信小程序事件绑定、base64格式图片载入及slider组件使用技巧,需要的朋友可以参考下
    2017-12-12
  • JavaScript动态操作表格实例(添加,删除行,列及单元格)

    JavaScript动态操作表格实例(添加,删除行,列及单元格)

    这篇文章主要是对JavaScript动态操作表格实例(添加,删除行,列及单元格)进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • JS中如何优雅的使用async await详解

    JS中如何优雅的使用async await详解

    async表示异步,而await可以看作async wait,个人对async与await的简单理解就是,我们可以用同步的方式去书写异步代码,这篇文章主要给大家介绍了关于JS中如何优雅的使用async await的相关资料,需要的朋友可以参考下
    2021-10-10

最新评论