DOM 0级
指浏览器专有的,非标准的方法、对象和集合。

DOM 1级 1998年发布
包括:
DOM core
DOM html

DOM 2级 DOM2 core 2000年发布  DOM2 html 2003年发布
包括:
DOM2 core
DOM2 html
DOM2 events
DOM2 style
DOM2 traversal and range   遍历
DOM2 views  提供访问和更新文档表现的能力。

DOM 3级  2007年发布
包括:
DOM3 core
DOM3 load and save
DOM3 validation
DOM3 events
DOM3 xpath   示例:abc/a
DOM3 views

利用DOMImplementation对象,检测浏览器是否支持的某DOM级别的某功能
在浏览器中DOMImplementation对象被实例化为document.implementation
验证浏览器是否实现某级DOM的某模块
document.implementation.hasFeature('模块名称', 'DOM级别');
示例:document.implementation.hasFeature('Core', '1.0');

DOM核心

浏览器解析html文件时,会根据自身支持的DOM模块将标记转换成element对象。
window
document 整个文档  扩展自node对象
html => documentElement 根元素
DOM规范中,每个标签之间的空白符都被解析为text节点对象。(IE中会忽略空白符,不解析为text节点)

继承
element对象继承了node对象的所有属性和方法。
继承链如下:
Node  DOM2核心  nodeName,nodeType,nodeValue,hasChildNodes,hasAttributes,insertBefore,appendChild...
 |
Element DOM2核心  tagName,getAttribute,setAttribute,removeAttribute...
 |
HTML Element  DOM2 HTML  id,title,className...
 |
HTMLAnchorElement(a标签)  DOM2 HTML  href,name,rel,accessKey,tabIndex,blur,focus...

核心node对象  
nodeName  Element.nodeName:标签名大写;Attr.nodeName:属性名小写;Text.nodeName:#text;
nodeValue 只适用于Text,Attr,Comments(注释),CDATASection,ProcessingInstructions对象。其它类型对象返回null
nodeType  Node.ELEMENT_NODE  1,Node.ATTRIBUTE_NODE  2,Node.TEXT_NODE  3;(IE中不存在Node静态类对象。)
parentNode
childNodes  返回类数组的NodeList对象  
            示例:document.body.childNodes[0] or document.body.childNodes.item(0)
firstChild
lastChild
previousSibling
nextSibling
attributes  返回类数组的NamedNodeMap对象,一个节点所有属性的集合。相对于NodeList对象有其它一些便捷方法,getNamedItem()...,如:document.body.childNodes[0].getNamedItem('href');
            示例:document.body.childNodes[0].attributes[0] or document.body.childNodes.item(0).attributes.item(0)
ownerDocument  指向节点所属根文档,document
hasChildNodes
hasAttributes  IE不支持
insertBefore  示例:newNode.insertBefore(refNode);
appendChild  示例:parentNode.appendChild(newNode);
removeChild  示例:parentNode.removeChild(refNode);
replaceChild  示例:parentNode.replaceChild(newNode, refNode);
cloneNode(true/false)  示例:refNode.cloneNode(true)

核心Element对象
getAttribute(name)
setAttribute(name, value)
removeAttribute(name)
还有一些基于DOM Attr节点对象的方法
getAttributeNode(name)  返回Attr节点
setAttributeNode(newAttr)  基于新的Attr节点对象设置属性
removeAttributeNode(oldAttr)  删除指定的属性节点
在Element对象中查找Element对象的唯一方法:
getElementsByTagName  返回类数组的NodeList对象,只返回Element类型节点,因此不包含Text类型节点。

核心Document对象
非标准:document.all, document.all[id]
document.documentElement  html标签
利用Document对象创建几种常用的节点
createAttribute(name)
createComment(data)
createElement(tagName)
createTextNode(data)
...
利用Document对象查找Element对象
getElementById
getElementsByTagName
DOM核心中不包含getElementsByClassName,因为XML文档没有类属性。该方法在DOM2 HTML中定义

DOM2 HTML

DOM2 HTML的HTMLDocument对象
title  title标签中的字符串
referrer  包含连接到当前页面的前一个页面的URL
domain  当前站点的域名
URL  当前页面在地址栏中的URL
body  引用body节点
images  当前文档中所有<img>标签的集合
applets  当前文档中所有<applet>标签的集合
links  当前文档中所有<link>标签的集合
forms  当前文档中所有<forms>标签的集合
anchors  当前文档中所有<a>标签的集合
cookie  当前页面中所有cookie信息的字符串
open()  打开一个文档,一接受write()方法输出
close()  关闭一个文档
write(data)
writeln(data)  写入文档的同时写入一个换行符
getElementsByName(elementName)
一些非标准的属性
frames
plugins
scripts
stylesheets

DOM2 HTML的HTMLElement对象
id
title
lang  在RFC 1766中为节点语言定义的语言代码
className

2015-03-11——简析DOM规范的更多相关文章

  1. Android 11(R) Power HAL AIDL简析 -- 基本接口

    Android 11(R) Power HAL AIDL将分三篇文章来介绍: Android 11(R) Power HAL AIDL简析 -- 基本接口 Android 11(R) Power HA ...

  2. Java Annotation 及几个常用开源项目注解原理简析

    PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...

  3. Nutch学习笔记二——抓取过程简析

    在上篇学习笔记中http://www.cnblogs.com/huligong1234/p/3464371.html 主要记录Nutch安装及简单运行的过程. 笔记中 通过配置抓取地址http://b ...

  4. JDK框架简析--java.lang包中的基础类库、基础数据类型

    题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含 ...

  5. 2015最新移动App设计尺寸视觉规范【图文版】(转)

    如今手机app的屏幕设计尺寸参差不齐,仿佛来到了移动界面尺寸战国时代,每家移动设备制造公司都为了迎合大众的口味,各家都在2014年大放光彩.2015年也将会是我们移动APP设计界快速发展的一年. 因为 ...

  6. Android 启动过程简析

    首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...

  7. iOS 学习笔记 六 (2015.03.28)常见错误

    2015.03.28 1. property's synthesized getter follows Cocoa naming convention for returning 'owned' ob ...

  8. 【ACM/ICPC2013】POJ基础图论题简析(一)

    前言:昨天contest4的惨败经历让我懂得要想在ACM领域拿到好成绩,必须要真正的下苦功夫,不能再浪了!暑假还有一半,还有时间!今天找了POJ的分类题库,做了简单题目类型中的图论专题,还剩下二分图和 ...

  9. SimpleDateFormat使用简析

    title: SimpleDateFormat使用简析 date: 2016-07-11 11:48:20 tags: Java SimpleDateFormat --- [转载自博客:http:// ...

随机推荐

  1. Atitit.antlr实现词法分析

    Atitit.antlr实现词法分析 1.1.  antlrworks-1.4.3.jar   wizard1 1.2. 词法的类型 id,int,float ,comment,str,char,wh ...

  2. php-fpm配置详解

    php-fpm详解 原文链接:http://php-fpm.anight.org/wiki:http://www.php-fpm.com/翻译:http://syre.blogbus.com/logs ...

  3. 分页技术框架(Pager-taglib)学习一(页面分页)

    一.Pager-taglib简介     1.Pager-taglib,支持多种风格的分页显示.实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多 ...

  4. 不要把<a href="">当作按钮用

    代码如下: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> < ...

  5. sublimtext3 自定义编译环境

    sublime text是一个非常神奇到编辑器,对于我这种小白来说,感觉比vim好用,但是如果用sublime自带到编译环境到话,是没法向程序汇总输入数据的,所以要自己新建编译命令 { "c ...

  6. vue 插件

    开发插件 插件通常会为vue添加全局功能,插件的范围没有限制--一般有下面几种: 1,添加全局方法或者属性,例:vue-coustom-element 2,添加全局资源:指令.过滤器,.过渡等,如vu ...

  7. PL/SQL Developer导入、导出表结构和表数据

    在表的所有者不能改变的情况下,可以使用导入导出表结构和表数据的方法,将表移动到你想要的所有者下(注:特别是建立表的时候如果以sysdba的身份登录的话,所有表的所有者都为sys,此时会对你用c#访问数 ...

  8. 用position: fixed;做个遮罩,怎么能让后面的View禁止滑动

    用一个view标签把代码包起来,当模态层出来时给它添加height:100%;position: absolute;overflow: hidden;.模态框消失时去掉样式      

  9. ddd 架构设计——abp

    一.为什么要分层 分层架构是所有架构的鼻祖,分层的作用就是隔离,不过,我们有时候有个误解,就是把层和程序集对应起来,就比如简单三层架构中,在你的解决方案中,一般会有三个程序集项目:XXUI.dll.X ...

  10. python笔记3 - 文件操作

    file 对象使用 open 函数来创建,下面说一下对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件,读取/写入文件内容 3.关闭文件. 注意: 文件打 ...