DOM扩展札记

  • Selector API
  • HTML5 DOM扩展
  • Element Traversal规范

Selector API

众多JavaScript库中,最常用的一个功能就是根据css选择符选择与某个模式匹配的DOM元素

Selector API Level1的核心是两个方法:

querySelector、querySelectorAll

可以通过Document及Element的实例来调用他们。当使用Element调用时,首先会在整个文章中查询,然后取出在Element子节点中的元素返回。如果传入了不支持的选择符,会报错。

querySelectorAll()方法返回的是一个NodeList的实例。能够调用这个方法的类除了DOcument与Element外,还包括DocumentFragment。

Selector API Level2规范为Element类型新增了一个matchesSelector()方法。这个方法接收一个参数:css选择符。如果元素与选择符匹配则返回true,否则返回false。

element.matchesSelector(selector);            规范

element.msMatchesSelector(selector);        ie

element.mozMatchesSelector(selector);      ff

element.webkitMatchesSelector(selector);   webkit

Element Traversal API

IE9及之前版本不会返回文本节点,而其他浏览器都会返回文本节点,导致了firstChild和childNodes的不一致。新出的traversal 规范为:

  • childElementCount
  • firstElementChild
  • lastElementChild
  • previousElementSibling
  • nextElementSibling

HTML5 DOM扩展

getElementsByClassName() ,Document或Element类型可以使用,返回的是一个NodeList的实例。Ie9+支持

calssList属性

在操作类名时,需要通过className属性添加删除。一般做法是为className前后加上一个空格,对要增加或删除的类座同样处理,然后进行字符串的拼接,删除,替换工作;成功后删除className首尾的空格。

HTML5中为所有元素新增的classList属性。包含以下方法:

add、contains、remove、toggle

焦点管理

HTML5添加了辅助管理DOM焦点的功能。document.activeElement属性,这个属性始终会引用DOM中当前获得了焦点的元素。元素获取焦点的方式有页面加载、用户输入、在代码中调用了focus方法。

默认情况下,文档刚加载完时,document.activeElement中保存的是document.body元素的引用。文档加载期间,document.activeElement为null.

所有浏览器都支持该属性。

HTMLDocument的变化。

1、readyState属性

document.readyState属性,两个可能值:loading、complete

2、兼容模式:document.compatMode;正常模式“CSS1Compat”混杂模式“BackCompat”

3、head属性:head = document.head || document.getElementsByTagName("head")[0]   (webkit浏览器实现)

4、自定义数据属性

HTML5规定可以为元素添加非标准的属性,但要添加“data-”前缀。这些属性可以任意添加、随便命名,只要以data-开头即可。添加了自定义属性之后,可以通过元素的dataset属性来访问自定义属性的值。

5、标记与文本

innerHTML、outerHTML;innerText、outerText都是IE的自定义属性,后来innerHTML与outterHTML被纳入规范。

读模式下,innerHTML属性返回调用元素的所有子节点的html标记;写模式下,innerHTML会根据指定的值创建新的DOM树,然后用这个DOM树完全替换调用元素的所有子节点。

不要指望所有浏览器的innerHTML返回的值都相同。

使用innerHTML替换元素字节点时,要将当前元素子节点中的JavaScript属性和事件处理程序都删除,防止内存泄露。innerHTML中不要script和style标签,这两者不会生效。

并不是所有的浏览器都支持innerHTML,比如<html>、<head><style><title>,<table>相关标签。为这些元素设置innerHTML时,最好换一种方式:先清空元素,然后将innerHTML转化成dom节点,插入到元素中。

6、insertAdjacentHTML()方法

两个参数:插入位置和要插入的html文本。插入位置:

beforebegin、afterbegin、beforeend、afterend这些值必须是小写形式

7、scrollntoView

element.scrollIntoView()某元素滚动到视口。

专有扩展

文档模式:

<meta http-equiv="X-UA-Compatible" content="IE=Edge">使用最新版本渲染

children属性

这个属性是HTMLCollection的实例,只包含元素总同样还是元素的子节点。IE8及更早之前的版本还会包含注释节点,IE9修复了这个问题。

contains()方法

判断一个元素是不是另一个元素的子节点。IE、ff、chrome都支持。

插入文本

innerText读取时,会按照由浅入深的顺序,将子文档树种的所有文本拼接起来。写入时,会删除所有子节点,插入包含相应文本值的文本节点。

ff不支持这个属性,但支持textContent。

所以在设置innerText或者textContent时,最好先清空子节点,然后使用document.createTextNode()创建文本节点插入。

该方法会对字符串中红的文本进行转义,比如:<p>test</p>

时间: 2024-09-30 18:36:07

DOM扩展札记的相关文章

javascript高级程序设计 第十一章--DOM扩展

javascript高级程序设计 第十一章--DOM扩展DOM最主要的扩展就是选择符API.HTML5和Element Traversal Selectors API:定义了两个方法 querySelector() 和 querySelectorAll(),能够基于CSS选择符从DOM中取得元素.querySelector()方法接收一个CSS选择符,返回该模式匹配的第一个元素,querySelectorAll()接收的参数一样,但是返回NodeList实例: matchesSelector()

js DOM 扩展

1. 选择符API querySelector()          返回匹配的第一个元素,接收一个 CSS 选择符.没有找到返回 null. querySelectorAll()      返回所有匹配的一个 NodeList, 这是一个快照不会动态改变.接收一个 CSS 选择符. mathesSelecttor()      如果调用元素与该选择符匹配,返回true, 否则返回 false. 接收一个 CSS 选择符. 2. 与类相关的扩充 getElementsByClassName()

JavaScript学习 八、DOM扩展

对DOM的两个主要扩展是Selectors API(选择符API)和HTML5.这两个扩展都是源自开发社区.此外还有一个不那么因为瞩目的ELement Traversal(元素遍历)规范.为DOM添加了一些属性. 选择符API 众多JavaScript 库中最常用的一项功能,就是根据CSS选择符选择与某个模式匹配的DOM元素. 实际上 jQuery 的核心就是通过CSS选择符查询DOM 文档取得元素的引用,从而抛开了 getElementById() 和 getElementsByTagName

DOM扩展学习笔记

对DOM的两个主要扩展是Selectors API(选择符API)和HTML5,还有一个不太瞩目的Element Traversal元素遍历规范为DOM添加了一些属性,另外还有一些专有扩展. 选择符API 元素遍历 HTML5 专有扩展 选择符API 让浏览器原生支持css查询,原理就是所有实现这一功能的JavaScript库都会写一个基础的CSS解析器,然后再使用已有的DOM方法查询文档并找到匹配的节点.当把这个功能变成原生API后,解析和树查询操作可以在浏览器内部通过编译后的代码来完成,极大

DOM扩展:DOM API的进一步增强[总结篇-下]

本文承接<DOM扩展:DOM API的进一步增强[总结篇-上]>,继续总结DOM扩展相关的功能和API. 3.6 插入标记 DOM1级中的接口已经提供了向文档中插入内容的接口,但是在给文档插入大量HTML标记的时候操作还是很繁杂的,每次插入一个元素,不仅要调用创建元素和文本节点的接口,还要调用appendChild等向文档中添加元素的接口,而且在添加时还要按照正确的顺序.而如果使用插入标记的方法,直接向文档中插入HTML字符串,由执行环境自动解析HTML字符串并创建相应的节点并添加到文档中,这

JavaScript的DOM扩展

虽然 DOM 为与 XML 及 HTML 文档交互制定了一系列核心 API,但仍然有几个规范对标准的 DOM进行了扩展.这些扩展中有很多原来是浏览器专有的,但后来成为了事实标准,于是其他浏览器也都提供了相同的实现.本章介绍的三个这方面的规范如下. 1 Selectors API,定义了两个方法,让开发人员能够基于 CSS 选择符从 DOM中取得元素,这两个方法是 querySelector() 和 querySelectorAll() . 2 Element Traversal,为 DOM 元素

10. javacript高级程序设计-DOM扩展

1. DOM扩展 1.1 选择符API l querySelector() 接收一个css选择符,返回与该模式匹配的第一个元素 l querySelectorAll() 接收一个css选择符,返回所有匹配的NodeList元素 1.2 HTML5 1.2.1 与类相关的扩充 l getElementsByClassName() 接收一个参数,一个包含一或者多个类名的字符串,返回带有指定类的所有元素的NodeList l classList属性,add(value),contains(value)

JavaScript学习笔记(十一)---- DOM扩展

(一)DOM扩展 对DOM的主要的扩展是SelectorsAPI(选择符API)和HTML5,还有一个Element Travesal规范. 1.选择符API jQuery的核心就是通过CSS选择符查询DOM文档取得元素的引用,从而抛开了getElementById( ) 和 getElementsByTagName( ). Selectors API Level 1的核心是两个方法:querySelector( )和 querySelectorAll( ). querySelector( ):

第十一章:DOM扩展

DOM扩展 选择符API querySelector方法 querySelectorAll方法 matchesSelector方法 元素遍历 HTML5 与类相关的补充 getElementsByClassName 方法 classList属性 焦点管理 HTMLDocument的变化 readyState 属性 兼容模式 head属性 字符集属性 自定义数据属性 插入标记 innerHTML 属性 outerHTML inserAdjacentHTML 方法 内存和性能问题 scrollInt