zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    13、字符串相互匹配删除
    12、指定长度替换制表符
    11、输入字符颠倒输出
    10、字符串输入删除末尾特殊符,清除空行
    9、筛选满足长度条件的输入内容进行输出
    8、获取输入的字符串并输出最长的那个
    7、初识函数
    6、计数垂直直方图输出
    5、计数水平直方图输出
    Tiny4412 Uboot
  • 原文地址:https://www.cnblogs.com/bugong/p/4330541.html
Copyright © 2011-2022 走看看