DOM启蒙
Cody Lindley
陈养剑 译
出版时间:2014年04月
页数:184
“Douglas Crockford在他的《JavaScript语言精粹》一书
中给过我们一张理解JavaScript语言内部工作机制的示意图。现在Cody Lindley给了我们一张对应文档对象模型。”
—— Jeremy Keith
Clearleft.com创始人与技术总监,《DOM 脚本编写》作者

通过《DOM启蒙》,读者将学习如何通过文档对象模型(DOM)更有效率地操作 HTML,而无需DOM操作库的帮助。作者Cody Lindley(jQuery手册)用菜谱风格的代码示例,用演示多种节点对象的工作方式,带你领略现代DOM理念。
在过去的十年里,框架简化了DOM的用法,后者因此被开发者尘封在前者之下。本书通过现代浏览器原生的概念与代码,将这些工具带回视线。读者将理解jQuery在DOM脚本编写中扮演的角色,并学习如何在移动应用和特定浏览器中直接使用DOM编写应用程序。

· 理解JavaScript节点对象和它们与DOM的关系
· 学习document、element、text,以及Document-Fragment对象的属性与方法
· 深入研究元素节点选取、尺寸位置等几何信息获取,以及内联样式
· 添加CSS样式表到一个HTML文档,并使用CSSStyle-Rule对象
· 使用多种方式绑定DOM事件
· 学习作者对dom.js的愿景,dom.js的灵感源自jQuery,是个为现代浏览器而作的DOM操作库

Cody Lindley,TandemSeven 首席前端架构师,拥有13年专业的HTML、CSS、 JavaScript、Flash,以及客户端性能技术经验。编写前端代码或与界面、交互设计打交道之余,他在多个技术大会上发表演讲。
  1. 前言
  2. 序言
  3. 第1章 节点概览
  4. 11.1 文档对象模型(Document Object Model,亦称 DOM)是个由JavaScript 节点对象组成的层次结构/树
  5. 11.2 节点对象类型
  6. 21.3 继承自节点对象的子节点对象
  7. 1.4 用于与节点打交道的属性与方法
  8. 1.5 识别节点的类型与名称
  9. 91.6 获取节点的值
  10. 1.7 使用 JavaScript 方法来创建元素与文本节点
  11. 1.8 使用 JavaScript 字符串创建并向DOM中添加元素与文本节点
  12. 1.9 提取DOM树中的部分作为JavaScript字符串
  13. 1.10 使用 appendChild() 与 insertBefore() 向DOM中插入节点对象
  14. 1.11 使用 removeChild() 与 replaceChild() 来移除与替换节点
  15. 1.12 使用 cloneNode() 来复制节点
  16. 1.13 理解节点集合(即 NodeList 与 HTMLCollection)
  17. 11.14 获取所有直属子节点的列表/集合
  18. 1.15 将 NodeList 或者 HTMLCollection 转换成JavaScript 数组
  19. 1.16 遍历 DOM 中的节点
  20. 1.17 使用 contains() 与 compareDocumentPosition()验证节点在 DOM 树中的 位置
  21. 1.18 判断两个节点是否相同
  22. 第2章 文档节点
  23. 2.1 文档节点概览
  24. 2.2 HTML 文档属性与方法(包括继承的)
  25. 2.3 获取 HTML Document 通用信息(标题、链接、提及者、最后修改时间 及兼容模式)
  26. 2.4 文档子节点
  27. 2.5 document 提供的 <!DOCTYPE>、<html lang="en">、<head>及 <body> 捷径
  28. 2.6 使用 document.implementation.hasFeature() 探测 DOM 规范/特性
  29. 2.7 获取文档中当前聚焦/激活节点的引用
  30. 2.8 判断文档或者文档中任何节点得到焦点
  31. 2.9 document.defaultView 是个到顶部/全局对象的捷径
  32. 2.10 使用 ownerDocument 从某一元素取得文档的引用
  33. 第3章 元素节点
  34. 3.1 HTML*Element 对象概览
  35. 3.2 HTML*Element 对象属性与方法(包括继承的)
  36. 3.3 创建元素
  37. 3.4 获取元素的标签名
  38. 3.5 获取元素属性与值的列表/集合
  39. 3.6 获取、设置及移除元素的属性值
  40. 3.7 验证元素是否有某一特定属性
  41. 3.8 获取类属性值列表
  42. 3.9 添加与移除类属性中的部分值
  43. 3.10 变换某个类属性值
  44. 3.11 判断类属性值是否含有某一特定值
  45. 3.12 获取与设置 data-* 属性
  46. 第4章 元素节点选取
  47. 4.1 选取特定元素节点
  48. 4.2 选取/创建一个元素节点列表(即 NodeList)
  49. 4.3 选取所有的直属子元素节点
  50. 4.4 选取与上下文有关的元素
  51. 4.5 预定义的元素节点选取/列表
  52. 4.6 使用 matchesSelector() 验证元素会否被选取
  53. 第5章 元素节点几何量与滚动几何量
  54. 5.1 元素节点尺寸、偏移及滚动概览
  55. 5.2 获取元素相对于 offsetParent 的 offsetTop 及 offsetLeft 值
  56. 5.3 使用 getBoundingClientRect() 获取元素相对于视区的Top, Right, Bottom 及Left边沿偏移量
  57. 5.4 获取元素在视区中的尺寸(边框 + 填充 + 内容)
  58. 5.5 获取元素在视区中的尺寸(填充 + 内容),不含边框
  59. 5.6 使用 elementFromPoint() 获取视区中某一特定点上最顶层的元素
  60. 5.7 使用 scrollHeight 及 scrollWidth 获取滚动元素的尺寸
  61. 5.8 使用 scrollTop及scrollLeft 获取并设置从上、左边滚动的距离
  62. 5.9 使用 scrollIntoView() 滚动元素到视区
  63. 第6章 元素节点内联样式
  64. 6.1 样式属性(亦称元素内联 CSS 属性)概览
  65. 6.2 获取、设置及移除单个内联 CSS 属性
  66. 6.3 获取、设置及移除所有内联 CSS 属性 .
  67. 6.4 使用 getComputedStyle() 获取元素的已计算样式(即包含任何级联样式的 实际样式)
  68. 6.5 使用 class 及 id 属性应用或者移除元素上的 CSS 属性
  69. 第7章 文本节点
  70. 7.1 文本对象概览
  71. 7.2 文本对象与属性
  72. 7.3 空白符创建文本节点
  73. 7.4 创建与注入文本节点
  74. 7.5 使用 .data 或 nodeValue 获取文本节点值
  75. 7.6 使用appendData()、deleteData()、insertData()、replaceData()及 subStringData() 操作文本节点
  76. 7.7 当有多个兄弟文本节点时
  77. 7.8 使用 textContent 移除文本标记并返回所有的子文本节点
  78. 7.9 textContent 与 innerText 的区别
  79. 7.10 使用 normalize() 合并兄弟文本节点成单个文本节点
  80. 7.11 使用 splitText() 分割文本节点
  81. 第8章 DocumentFragment 节点
  82. 8.1 DocumentFragment 对象概览
  83. 8.2 使用 createDocumentFragment() 创建 DocumentFragment
  84. 8.3 添加 DocumentFragment 到实时 DOM
  85. 8.4 使用文档片段上的 innerHTML
  86. 8.5 通过复制将片段所含节点保留在内存中
  87. 第9章 CSS 样式表与 CSS 规则
  88. 9.1 CSS 样式表概览
  89. 9.2 访问 DOM 中所有样式表(即 CSSStyleSheet 对象)
  90. 9.3 CSSStyleSheet 属性与方法
  91. 9.4 CSSStyleRule 概览
  92. 9.5 CSSStyleRule 属性与方法
  93. 9.6 使用 cssRules 获取样式表内的 CSS 规则列表
  94. 9.7 使用 insertRule() 和 deleteRule() 来插入与删除样式表中的 CSS 规则
  95. 9.8 使用 .style 属性修改 CSSStyleRule 的值
  96. 9.9 创建新的内联 CSS 样式表
  97. 9.10 以编程方式添加外部样式表到 HTML 文档
  98. 9.11 用 .disabled 属性使样式表失效/生效
  99. 第10章 DOM 中的 JavaScript
  100. 10.1 插入与执行 JavaScript 概览
  101. 10.2 JavaScript 默认同步解析 .
  102. 10.3 使用 defer 推迟外部脚本的下载与执行
  103. 10.4 使用 async 异步下载并执行外部JavaScript文件
  104. 10.5 使用动态 <script> 元素强制异步加载并解析外部 JavaScript
  105. 10.6 通过给异步 <script> 加 onload 回调从而知道它们何时加载完毕
  106. 10.7 注意含有 DOM 操作的 <script> 的放置
  107. 10.8 获取 DOM 中 <script> 列表
  108. 第11章 DOM 事件
  109. 11.1 DOM 事件概览
  110. 11.2 DOM 事件类型
  111. 11.3 事件流程
  112. 11.4 添加事件监听函数到Element节点、window 对象及document 对象
  113. 11.5 移除事件监听函数
  114. 11.6 从事件对象中获取事件属性
  115. 11.7 使用 addEventListener() 时监听函数中 this的值
  116. 11.8 事件调用时取得事件模板而不是所绑定的节点或对象
  117. 311.9 使用 preventDefault() 撤销浏览器默认事件
  118. 11.10 使用 stopPropagation() 终止事件流程
  119. 11.11 使用 stopImmediatePropagation() 终止事件流程与相同目标上的其他 事件
  120. 11.12 自定义事件
  121. 11.13 模拟/触发鼠标事件
  122. 11.14 事件委托
  123. 第12章 创作dom.js:源自jQuery的灵感,服务于现代浏览器,这是一个万众期待的DOM库
  124. 12.1 dom.js 概览
  125. 12.2 创建唯一作用域
  126. 12.3 创建 dom() 与 GetOrMakeDom(),全局暴露 dom() 与 GetOrMakeDom.prototype
  127. 12.4 创建传给 dom() 的可选上下文参数
  128. 12.5 依据 params 产生一个持有 DOM 节点引用的对象并返回
  129. 12.6 创建 each() 方法并使它可链式调用
  130. 12.7 创建 html()、append()及 text() 方法
  131. 12.8 拉 dom.js 出来兜兜风
  132. 12.9 总结与 dom.js 继续
书名:DOM启蒙
作者:Cody Lindley
译者:陈养剑 译
国内出版社:电子工业出版社
出版时间:2014年04月
页数:184
书号:978-7-121-22617-5
原版书书名:DOM Enlightenment
原版书出版商:O'Reilly Media
Cody Lindley
 
Cody Lindley是一名客户端工程师(也称为前端开发人员)及Flash开发者。他在HTML、CSS、JavaScript、Flash、客户端性能技术方面有丰富的工作经验(11年以上),这些技术都与Web开发有关。如果他不在编写客户端代码,就很可能是在研究界面/交互设计,或是在准备创作材料以及在各种会议上要用的演讲稿。当他不坐在电脑前时,他肯定正和他的妻子和孩子在爱达荷州的博伊西游玩,他们在博伊西可以进行三项全能运动训练、滑雪、骑山地自行车和公路自行车、登山、阅读、看电影或者讨论基督教世界观的理论依据。
 
 
《DOM 启蒙》的封面动物是彭巴角鹄(Otus pembaensis)。封面图来自 Bernard 的《自然历史》(Histoire Naturelle)。封面字体为 Adobe ITC Garamond。文本字体为 Adobe Minion Pro;标题字体为 Adobe Myriad Condensed;代码字体为 Dalton Maag的Ubuntu Mono。