全栈工程师开发手册 (作者:栾鹏)

js系列教程6-BOM操作全解
js系列教程7-DOM操作全解

js中DOM, DOCUMENT, BOM, WINDOW 区别

DOM 全称是 Document Object Model,也就是文档对象模型。是针对XML的基于树的API。描述了处理网页内容的方法和接口,是HTML和XML的API,DOM把整个页面规划成由节点层级构成的文档。针对XHTML和HTML的DOM。这个DOM定义了一个HTMLDocument和HTMLElement做为这种实现的基础,就是说为了能以编程的方法操作这个 HTML 的内容(比如添加某些元素、修改元素的内容、删除某些元素),我们把这个 HTML 看做一个对象树(DOM树),它本身和里面的所有东西比如

这些标签都看做一个对象,每个对象都叫做一个节点(node),节点可以理解为 DOM 中所有 Object 的父类。

DOM 有什么用?就是为了操作 HTML 中的元素,比如说我们要通过 JS 把这个网页的标题改了,直接这样就可以了:
document.title = ‘how to make love’;
这个 API 使得在网页被下载到浏览器之后改变网页的内容成为可能。

document

当浏览器下载到一个网页,通常是 HTML,这个 HTML 就叫 document(当然,这也是 DOM 树中的一个 node),从上图可以看到,document 通常是整个 DOM 树的根节点。这个 document 包含了标题(document.title)、URL(document.URL)等属性,可以直接在 JS 中访问到。

在一个浏览器窗口中可能有多个 document,例如,通过 iframe 加载的页面,每一个都是一个 document。

在 JS 中,可以通过 document 访问其子节点(其实任何节点都可以),如
document.body;document.getElementById(‘xxx’);

BOM

BOM 是 Browser Object Model,浏览器对象模型。

刚才说过 DOM 是为了操作文档出现的接口,那 BOM 顾名思义其实就是为了控制浏览器的行为而出现的接口。

浏览器可以做什么呢?比如跳转到另一个页面、前进、后退等等,程序还可能需要获取屏幕的大小之类的参数。

所以 BOM 就是为了解决这些事情出现的接口。比如我们要让浏览器跳转到另一个页面,只需要
location.href = “http://www.xxxx.com“;

这个 location 就是 BOM 里的一个对象。

window

window 也是 BOM 的一个对象,除去编程意义上的“兜底对象”之外,通过这个对象可以获取窗口位置、确定窗口大小、弹出对话框等等。例如我要关闭当前窗口:
window.close();

总结一下题主的问题:

DOM 是为了操作文档出现的 API,document 是其的一个对象;
BOM 是为了操作浏览器出现的 API,window 是其的一个对象。

归DOM管的:

E区(就是你说的document啦。由web开发人员呕心沥血写出来的一个文件夹,里面有index.html,CSS和JS什么鬼的,部署在服务器上,我们可以通过浏览器的地址栏输入URL然后回车将这个document加载到本地,浏览,右键查看源代码等。
归BOM管的:

A区(浏览器的标签页,地址栏,搜索栏,书签栏,窗口放大还原关闭按钮,菜单栏等等)

B区(浏览器的右键菜单)

C区(document加载时的状态栏,显示http状态码等)

D区(滚动条scroll bar)
BOM是浏览器对象模型,DOM是文档对象模型,前者是对浏览器本身进行操作,而后者是对浏览器(可看成容器)内的内容进行操作
BOM和DOM的结构关系示意图

js中DOM, DOCUMENT, BOM, WINDOW 区别相关推荐

  1. web前端-JS(DOM、BOM)

    web前端-JS(DOM.BOM) 1. DOM- 操作元素 1.1 获取元素 1.2 事件基础 1.3 操作元素 1.3.1 改变元素的内容 1.3.2 常见元素的属性操作 1.3.3 表单元素的属 ...

  2. DOM和BOM的区别

    DOM和BOM的区别 在浏览器中运行的JavaScript可以认为由三部分组成:ECMAScript描述了该语言的语法和基本对象,DOM文档对象模型描述了处理网页内容的方法和接口,BOM浏览器对象模型 ...

  3. JS中DOM是什么、DOM的基本操作、DOM操作盒子模型的13个api——大总结(附源码)

    文章目录 一,什么是DOM? 二,DOM的具体用途及发展史? 1,操作元素 2,操作属性 3,操作文本 三,JS操作盒子模型需要的13个api 一,什么是DOM? DOM:Document Objec ...

  4. 前端技术学习第四讲:JavaScript中DOM和BOM

    JavaScript中DOM和BOM 一.DOM和BOM DOM:文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口.它是一种与 ...

  5. Js中的style,currentStyle,getComputedStyle()区别

    Js中的style,currentStyle,getComputedStyle()区别  样式表有三种方式: 1.内嵌样式(inline Style)-是写在Tag里面的,内嵌样式只对所有的Tag有效 ...

  6. js中的extend的用法及其JS中substring与substr的区别

    1.    JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为这两种方法的使用时一样的. ...

  7. js中几个对象的区别和用法

    js中几个对象的区别和用法 今天总结一下js中几个对象的区别和用法: 首先来说说 parent.window与top.window的用法 "window.location.href" ...

  8. JS 中的 event?event:window.event什么意思?求详解。

    JS 中的 event?event:window.event什么意思?求详解. 2013-04-16 00:01flying607 | 分类:JavaScript |浏览813次 <script ...

  9. 原生JS中DOM节点相关API合集

    原生JS中DOM节点相关API合集 节点属性 Node.nodeName //返回节点名称,只读 Node.nodeType //返回节点类型的常数值,只读 Node.nodeValue //返回Te ...

最新文章

  1. 【Java8新特性】关于Java8的Stream API,看这一篇就够了!!
  2. JS~重写alter与confirm,让它们变成fancybox风格
  3. php 商品显示,php – WooCommerce仅显示购买的商品
  4. linux基本命令-ls
  5. [js高手之路]javascript腾讯面试题学习封装一个简易的异步队列
  6. 谷歌紧急修复已遭在野利用的Chrome 0day
  7. 证明3-SAT问题是NP-complete
  8. 最新最全linux系统调优指南(centos7.X)
  9. xcode 自定义Eclipse里边常用的快捷键
  10. 1.1 print输出语句(Python)
  11. 【服务器】服务器安全防护、防止服务器攻击和保护措施
  12. 如何批量调整图片大小?
  13. esxi 虚拟机的控制台上键盘无法输入
  14. 业内人士揭露餐馆秘密:滋补汤基本没营养
  15. 游戏项目开发的简单流程
  16. linux系统时间编程(2) 各种时间标准GMT、UTC、世界时、TAI
  17. InputStream输入流七牛上传图片
  18. SpringBoot项目的云服务器部署
  19. MongoDB安装(新版本保姆级教程)
  20. 摄像头8mm可以看多远_摄像头焦距怎么选

热门文章

  1. 讯飞输入法更新10.0版本 上线全新A.I.语音输入引擎
  2. python用户画像_新闻个性化推荐系统源码之构建离线用户和文章特征
  3. python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
  4. python数字保留两位_Python 鲜为人知的数值格式化
  5. ES6的概念以及运行环境~满满的干货
  6. 索尼高清影视技术学院参观观后感
  7. java 有趣注释_Java8 中有趣酷炫的小技巧
  8. C语言章节作业第五次,C语言第五次上机作业参考答案
  9. SpringMVC控制器单例和多例
  10. 完全卸载Oracle11