zoukankan      html  css  js  c++  java
  • 高程 第11章 DOM扩展

    对DOM的两个主要的扩展是Selectors API和HTML5。

    11.1 选择符API

    Selectors API Level1的核心是两个方法:querySelector()和querySelectorAll().

    Selectors API Level2为Element类型新增了一个 方法matchsSelector().这接收一个参数,即CSS选择符,如果调用元素与该选择符匹配,返回true; 否则,返回false。

    可以为matchesSelector()封装一个函数

    function matchsSelector(element,selector){
    if(element.matchsSelector){
    return element.matchsSelector(selector);
    }else if(element.msMatchesSelector){
    return element.msMatchesSelector;
    }else if(element.mozMatchesSelector){
    return element.mozMatchesSelector;
    }else if(element.webkitMatchesSelector){
    return element.webkitMatchesSelector;
    }else{
    throw new Error("Not supported.");
    }
    }
     
    11.2 元素遍历
    childElementCount,firstElementChild,lastElementChild,previousElementSibling,nextElementSibling.
     
    11.3 HTML5
    getElementsByClassName().
    classList的几个方法:add(value),contains(value),remove(value),toggle(value).
    document.activeElement:这个属性始终会引用DOM中当前获得了焦点的元素。
    元素获得焦点的方式页面加载,用户输入(通常通过按Tab键)和在代码中调用focus()方法。
    document.hasFocus(),用于确定文档是否获得了焦点。
    通过检测文档是否获得了焦点,可以知道用户是不是正在与页面交互。
     
    document.readyState有两个可能值:loading或complete。
    document.compatMode的值:CSS1Compat(标准),BackCompat(混杂模式).
     
    var head=document.head||document.getElementsByTagName('head')[0];
     
    如果文档没有使用默认字符集,那charset和defaultCharset属性的值不一样。
     
    自定义属性,前缀加data-。
    添加了自定义属性之后,可以通过元素的dataset属性来访问自定义属性的值。
     
    innerHTML属性,不同浏览器返回文本格式会有所不同。
    outerText
     
    scrollIntoView(),
    scrollIntoViewIfNeeded(alignCenter),
    scrollByLines(lineCount),
    scrollByPages(pageCount).
     
    11.4 专有扩展
    IE5:以混杂模式渲染页面
    IE7:以IE7标准模式渲染页面。
    IE8:以IE8标准模式渲染页面。
    IE9:以IE9标准模式渲染页面。
     
    Edge:始终以最新的文档模式来渲染页面。忽略文档类型声明。
    EmulateIE9:如果有文档类型声明,则以IE9标准模式渲染页面,否则将文档模式设置为IE5。
    EmulateIE8:如果有文档类型声明,则以IE8标准模式渲染页面,否则将文档模式设置为IE5。
    EmulateIE7:如果有文档类型声明,则以IE7标准模式渲染页面,否则将文档模式设置为IE5。
    9:强制以IE9标准模式渲染页面,忽略文档类型声明。
    8:强制以IE8标准模式渲染页面,忽略文档类型声明。
    7:强制以IE7标准模式渲染页面,忽略文档类型声明。
    5:强制将文档模式设置为IE5,忽略文档类型声明。
     
    没有规定说必须在页面中设置X—UA-Compatible,默认情况下,浏览器会通过文档类型声明来确定是使用最佳的可用文档模式,还是使用混杂模式。
     
    children属性
    contains()方法
    使用DOM Level3 compareDocumentPosition()也能够确定节点间的关系。
     
    function contains(refNode,otherNode){
    if(typeof refNode.contains=="function"&&(!client.engine.webkit||client.engine.webkit>=522)){
    return refNode.contains(otherNode);
    }else if(typeof refNode.compareDocumentPosition=="function"){
    return !!(refNode.compareDocumentPosition(otherNode)&16);
    }else{
    var node=otherNode.parentNode;
    do{
    if(node===refNode){
    return true;
    }else{
    node=node.parentNode;
    }
    }while(node!==null);
    return false;
    }
    }
     
    innerText属性
    outerText属性
    textContent是DOMLevel3规定的一个属性。
     
    function getInnerText(element){
    return (typeof element.textContent=="string")?element.textContent:element.innerText;
    }

    function setInnerText(element,text){
    if(typeof element.textContent=="string"){
    element.textContent=text;
    }else{
    element.innerText=text;
    }
    }
     
     
    11.5小结
    Selectors API,定义了两个方法,让开发人员能够CSS选择符从DOM中取得元素,这两个方法是querySelector()和querySelectorAll().
    Element Traversal,为DOM元素定义了额外的属性,让开发人员能够更方便地从一个元素跳到另一个元素。
     
     
     
     
  • 相关阅读:
    OC中Foundation框架之NSDictionary、NSMutableDictionary
    【03_136】Single Number
    【算法】QuickSort
    【02_258】Add Digits
    【01_292】Nim Game
    做题过程中得到的注意点
    No.02——第一次使用Android Studio,并创建出Hello World
    No.01——配置编程环境
    一个好用的代码分享网站
    【数据结构】某些难理解点
  • 原文地址:https://www.cnblogs.com/sunshinegirl-7/p/5106101.html
Copyright © 2011-2022 走看看