浅谈Dom和Bom(清晰易懂版)

news2024/9/25 0:47:58

在这里插入图片描述

DOM(文档对象模型)

DOM 是浏览器提供的一种操作网页内容和结构的 API,它将 Web 页面表示为一个树形结构,其中每一个 HTML 元素都是一个节点,可以通过 DOM API 对其进行访问和操作。DOM API 包括了一系列方法和属性,可以用来修改网页的内容、样式和结构,实现动态效果和用户交互。

DOM 树的根节点是 document 对象,它代表了整个 HTML 文档,可以通过 document 对象访问到 HTML 元素、文本节点、属性节点等。

DOM API 可以分为以下几类:

  1. 节点遍历和选择器:通过 document 对象的方法和属性,可以遍历和选择 DOM 树中的节点,如 getElementById()getElementsByTagName()querySelector()querySelectorAll() 等。

  2. 节点操作:通过 document 对象的方法和属性,可以对 DOM 树中的节点进行操作,如 createElement()appendChild()insertBefore()removeChild()setAttribute()getAttribute() 等。

  3. 样式操作:通过 document 对象的 CSS 属性,可以对 DOM 元素的样式进行操作,如 styleclassNameclassList 等。

  4. 事件处理:通过 document 对象的事件处理属性和方法,可以对 DOM 元素的事件进行处理,如 onclickonmouseoveraddEventListener()removeEventListener() 等。

BOM(浏览器对象模型)

BOM 是浏览器提供的一种操作浏览器窗口和其他浏览器相关的对象的 API,它包括了窗口、文档、历史记录、位置、屏幕等对象,可以通过 BOM API 对其进行访问和操作。BOM API 包括了一系列方法和属性,可以用来控制浏览器的行为、操作浏览器窗口、获取用户信息等。

BOM API 可以分为以下几类:

  1. 窗口操作:通过 window 对象的方法和属性,可以对浏览器窗口进行操作,如 open()close()resizeTo()moveTo() 等。

  2. 文档操作:通过 document 对象的方法和属性,可以对浏览器文档进行操作,如 write()writeln()cookiereadyState 等。

  3. 历史记录操作:通过 history 对象的方法和属性,可以对浏览器的历史记录进行操作,如 back()forward()go() 等。

  4. 位置操作:通过 location 对象的方法和属性,可以获取当前页面的 URL 和对 URL 进行操作,如 hrefprotocolhostnamepathname 等。

  5. 屏幕操作:通过 screen 对象的方法和属性,可以获取屏幕的信息,如 widthheightcolorDepthavailWidthavailHeight 等。

需要注意的是,BOM API 并没有被标准化,不同浏览器的实现可能会有所不同,因此在使用 BOM API 时要特别注意浏览器兼容性问题。

总之,DOM 和 BOM 是 Web 开发中两个重要的概念,分别代表了文档对象模型和浏览器对象模型。通过使用 DOM 和 BOM API,可以对 Web 页面和浏览器进行灵活的操作和控制,实现更丰富、更复杂的 Web 应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/498038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shapes布局-文字环绕动画

文章目录 说明实现以及语法动画渐变裁切图形变换的动画效果 说明 Shapes也有形状、图形的意思,我们可以在页面中创建图形,并让内容环绕在定义的图形边上。 Shapes的官方文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Shapes/F…

YOLOv8 来了,快速上手实操

目录 YOLOv8的优点安装ultralytics使用YOLOv8n在图像上进行PredictTasks与 ModesModes - 模式分类Tasks - 任务分类 👨‍💻 作者简介:程序员半夏 , 一名全栈程序员,擅长使用各种编程语言和框架,如JavaScript、React、N…

SpringBoot集成Redis—缓存穿透解决方案与哨兵模式实战

目录 1、环境准备 1)pom.xml引入Redis依赖 2) 演示业务场景 2、SpringBoot集成Redis单机模式 1) 通过MyBatis逆向工程生成实体Bean和数据持久层 2) application.yml 中配置redis连接信息 3) 启动redis服务 4) XinTuProductRedisController类 5…

一图看懂 yarl 模块:为URL解析和更改提供了方便的URL类, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 yarl 模块:为URL解析和更改提供了方便的URL类, 资料整理笔记(大全) 摘要模块图类关系图模块全展开【yarl】统计常量模块1 yarl._quoting…

Python图形界面开发——系统资源监视器System-Monitor

Python图形界面程序怎么开发呢?很多人推荐python自带的tkinter自带库,还有pyqt这个这种拖拽式界面开发方案,但是他们开发界面比较难定制界面样式。现在web前端这么多框架用来开发python的图形界面其实不是很好?下面这么案例就是用…

Python爬虫 | 一文解决文章付费限制问题

本文概要 本篇文章主要介绍利用Python爬虫爬取付费文章,适合练习爬虫基础同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧! 🌟🌟🌟个人简介🌟&…

项目内训(2023.5.6)

目录 Nacos是什么? 领域模型是什么? domain模块一般是干什么的? 在小乌龟中合并其他分支的作用是什么? nacos的配置文件 服务集群、服务提供、服务更加灵活庞大、消费服务、访问比较麻烦,A和B服务一起访问 系统结…

Qt5.9学习笔记-事件(四)Qt5.9中常见事件

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

5月1日 9H45min|5月2日 8H20min+30min|时间轴复盘

8:00 起床 8:00-8:30 洗漱吃饭 8:30-10:40 temporary pools阅读真题精读 (真的很慢了 不知道什么原因 感觉也没有彻底完全弄懂)【2h+10min】 10:40-11:10 午餐+酸奶(423+174KJ) 11:20-12:30 三篇阅读【1h+10min】 13:10-14:50 健身 14:50-15:45诵默写list…

【Stable Diffusion】ControlNet基本教程(四)

本文概要 接上篇【Stable Diffusion】ControlNet基本教程(三),本篇再介绍两个ControlNet常见的基本用法:控制人物动作和建筑/室内生成。让人物摆出特定的动作,这是ControlNet最神级的操作!这意味着可以自定…

密码学【java】初探究之springboo集成mybatis,swagger,数字签名

文章目录 项目环境一 swagger技术的补充1.1 [swagger]((https://github.com/OAI/OpenAPI-Specification))介绍1.2 swagger的基础注解1.3 controller添加swagger注解 二 项目搭建2.1 创建数据库2.2 引入项目依赖2.3 配置数据库的连接2.4 配置swagger的配置…

USB 字节序,编码格式及位填充

字节序 LSB 发送一个字节时,先发送低位数据,再发送高位数据发送一个字时,先发送低字节数据,再发送高字节数据 例如: 发送 0x2D,发送的顺序为:10110100(低位在前,高位在后)发送 0…

项目前置准备

目录 项目前置准备 总体架构 CVPR2022是什么 一个项目架构图要如何进行看和学习呢?内容有点多有些摸不着头脑 我该如何理解架构图中的组件 Jenkins是什么? Docker是什么? FastDFS是什么? 项目前置准备 总体架构 CVPR2022是什…

golang grpc配置使用实战教程

什么是PRC&GRPC RPC是远程过程调用(Remote Procedure Call)的缩写形式, RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。通俗地讲,使用RP…

软考 软件设计师 数据结构

大O表示法 常数阶,他的次数不会随着n的变大而变长 抓大头 取次方最大的 时间复杂度 没有循环 没有递归没有跟n相关的东西,那么他的复杂度就是o(1) 为什么ii*2那里会加1阿? 因为需要加一次才能跳出循环1 2 4 8 中间加…

有趣的回文检测

英文中有很多的回文词,回文词的拼法十分有趣,无论是从前往后拼读,还是从后往前拼读,他们的拼法和词义都不变。例如:dad(爸爸),mum(妈妈),noon&…

flac格式怎么转换mp3格式?

flac格式怎么转换mp3格式?什么是flac格式呢?通常来说,flac是一种无损音频压缩编码。flac格式主要特点就是无损压缩。对于flac格式而言,与其他有损压缩编码不同,比如与aac、mp3等相较而言,flac对原有的音频信…

PySide6/PyQT多线程之 生命周期:从创建到销毁的完整解析

前言 在PySide6/PyQT 中使用多线程时,多线程生命周期是一个重要的概念。如果不能正确地管理多线程生命周期,可能会导致程序崩溃、内存泄漏等问题。 在前面的文章中有介绍到 PySide6/PyQT 可以实现多线程的多个类, 有 QObject、QThread、QRun…

【C++刷题笔记】继承和多态常见面试题汇总

对C继承和多态方面的部分面试题进行了汇总 一、概念考察 1. 下面哪种面向对象的方法可以让你变得富有( ) A: 继承 B: 封装 C: 多态 D: 抽象 2. ( )是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无关,而对方法的调用则可以关联于具体…

双目测距--4 双目立体匹配 获取深度图

在这之前需要已经完成双目标定,这里是利用双目标定结果利用SGBM算法获取深度图,以及转伪彩图。 目录 StereoSGBM用到的参数: 一、 预处理参数 二 、代价参数 三 、动态规划参数 四、后处理参数 reprojectImageTo3D函数 获取真实距离 …