2015-03-11——简析DOM规范

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

时间: 2024-08-13 14:23:49

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

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

PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation Java 1 2 3 @Override public void onCreate(Bundle savedInstanceState); Retrofit Annotation Java 1 2 3 @GET("/users/{username}&quo

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

题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说.还是在一个层级上,它们都是须要被编译成字节码.在JRE中执行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列全部文章基于的JDK版本号都是1.7.16. 源代码下载地址:https://jdk7.jav

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

Nutch学习笔记二--抓取过程简析 学习环境: ubuntu 概要: Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. 通过nutch,诞生了hadoop.tika.gora. 先安装SVN和Ant环境.(通过编译源码方式来使用nutch) apt-get install ant apt-get install subversion [email protected]:~/data/nutch$ svn co https:

JDK源码简析--java.lang包中的基础类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 在本节中,简析java.lang包所包

Linux网络性能优化方法简析

Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux内核中提升网络性能的一些优化方法的简析,以让我们去后台看看魔术师表演用的盒子,同时也看看内核极客们是怎样灵活的,渐进的去解决这些实际的问题. AD:2014WOT全球软件技术峰会北京站 课程视频发布 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性

.NET设计模式简析

首先,是设计模式的分类,我们知道,常用的设计模式共23种.但总体来说,设计模式氛围三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单列模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模版方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.转改模式.访问者模式.终结者模式.解释器模式. 另外还有并发型模式和线程池模式等. 介绍了分类,下面简单说下设计模式的六大原则

RecycleView + CardView 控件简析

今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleView的“列表”样式,Support包默认包含了:LinearLayoutManager  横向或纵向的滚动列表. GridLayoutManager  网格列表.StaggeredGridLayoutManager  交错的网格列表. 2.Adapter负责处理RecycleView的数据和样式 3

仿冒公检法手机诈骗简析

1 电话诈骗中的半壁江山: 仿冒公检法诈骗 电信诈骗,让人不胜其害.也让人不堪其扰,在受害者中有人倾家荡产,也有人家破人亡.2015年,全国电信诈骗发案59.9万起,被骗走222亿元,这两个数字触目惊心. 而根据腾讯移动安全/反诈骗实验室的数据显示电话诈骗损失中高达57.39%案件都是仿冒公检法诈骗,可以说仿冒公检法类是目前电话诈骗中最大的毒瘤. 2 仿冒公检法诈骗案情回顾 这个案例中诈骗骗子的诈骗套路分为以下几个步骤: 第一步:骗取信任. 骗子通过网络购买的受害者个人信息,例如身份证号.住址等

《软件测试管理公开课》2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海,欢迎报名!

课时:13小时(2天) 在软件开发流程中构筑软件质量 --软件测试管理     2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海   [课程背景] 据中国软件行业协会研究报告显示,2010年1-11月,我国软件业呈快速增长态势,同比增长30%,增速比去年同期提高8.6个百分点,软件产业已成为中国高科技发展重要支柱之一,但中国软件产品质量保证手段以及测试流程和管理的规范性,与国外同行(美国.印度等)存在较大的的差距.      在软件业较发达的国家, 软件测