DOM概述
本文主要是总结整理一些DOM的api,对一些函数例子做一些编写和整理,以供开发者进行学习讨论。
DOM介绍
DOM译为文档对象模型(document object model),DOM是HTML和XML文档的编程接口,提供了文档的结构化表述,定义了一种方式可以让他从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM将文档解析成一个由节点和对象组成的结构集合。他会将web页面和脚本或者程序语言连接起来。
一个web页面是一个文档,他可以在浏览器窗口或者通过HTML源码显示出来,但是这两种形式展示的是相同的一份文档。DOM提供了对同一份文档的另一种表现,存储和操作的形式。
DOM对象
1.Attr对象
该类型使用对象来表示一个DOM元素的属性。在大多数DOM方法中,你可能会直接通过字符串的方式获取属性值(例如Element.getAttribute()),但是一些函数(例如Element.getAttributeNode()
)或通过迭代器访问时则返回Attr
类型。
属性 |
描述 |
baseURI |
返回属性的绝对基准 URI。 |
isId |
如果属性是 id 类型,则返回 true,否则返回 false。 |
localName |
返回属性名称的本地部分。 |
name |
返回属性的名称。 |
namespaceURI |
返回属性的命名空间 URI。 |
nodeName |
返回节点的名称,依据其类型。 |
nodeType |
返回节点的类型。 |
nodeValue |
设置或返回节点的值,依据其类型。 |
ownerDocument |
返回属性所属的根元素(document对象)。 |
ownElement |
返回属性所附属的元素节点。 |
prefix |
设置或返回属性的命名空间前缀。 |
schemaTypeInfo |
返回与属性相关联的类型信息。 |
specified |
如果属性值被设置在文档中,则返回 true,如果其默认值被设置在 DTD/Schema 中,则返回 false。 |
textContent |
设置或返回属性的文本内容。 |
text |
返回属性的文本。IE-only。 |
value |
设置或返回属性的值。 |
xml |
返回属性的 XML。IE-only。 |
2.DOMTimeStamp
DOMTimeStamp类型表示绝对或相对毫秒数,具体取决于它出现的规范。
3.NodeList
NodeList
对象是节点的集合,通常是由属性,如Node.childNodes
和 方法,如document.querySelectorAll
返回的。
NodeList
不是一个数组,是一个类似数组的对象(Like Array Object)。虽然 NodeList
不是一个数组,但是可以使用 forEach()
来迭代。我们还可以使用 Array.from()
将其转换为数组。
不过,有些浏览器较为过时,没有实现 NodeList.forEach()
和 Array.from()
。我们可以用 Array.prototype.forEach()
来规避这一问题。
在一些情况下,NodeList
是一个实时集合,也就是说,如果文档中的节点树发生变化,NodeList
也会随之变化。例如,Node.childNodes
是实时的:
var parent = document.getElementById('parent'); var child_nodes = parent.childNodes; console.log(child_nodes.length); // 我们假设结果会是“2” parent.appendChild(document.createElement('div')); console.log(child_nodes.length); // 但此时的输出是“3”
在其他情况下,NodeList
是一个静态集合,也就意味着随后对文档对象模型的任何改动都不会影响集合的内容。比如 document.querySelectorAll
就会返回一个静态 NodeList
。
属性 |
描述 |
length |
|
item() |
根据给定的索引,返回一个 |
entries() |
该方法返回一个迭代协议,允许遍历此对象中包含的所有键/值。该值也是一个 |
forEach() |
|
keys() |
返回 |
values() |
该方法返回一个iterator迭代器,可以利用迭代器遍历所有value。 |
4.CharacterData
CharacterData
抽象接口(abstract interface)代表 Node
对象包含的字符。这是一个抽象接口,意味着没有 CharacterData
类型的对象。 它是在其他接口中被实现的,如 Text
、Comment
或 ProcessingInstruction
(en-US) 这些非抽象接口。
属性 |
描述 |
length |
该节点包含的字符数。 |
data |
该节点包含的文本。 |
appendData() |
把指定的字符串添加到该节点包含的文本上。 |
deleteData() |
从该节点删除指定的文本。 |
insertData() |
把指定的字符串插入指定位移量处的节点文本。 |
replaceData() |
用指定的字符串替换从指定位置开始的指定数量的文本。 |
substringData() |
返回从指定位移量处开始的指定数量的字符的文本副本。 |
5.DOMSettableTokenList
DOMSettableTokenList
实际上是merged into DOMTokenList
在WHATWG“生活标准”版本的规范。有参数value,还在测试中。
6.ParentNode
ParentNode
混合了所有(拥有子元素的) Node
对象包含的共有方法和属性。
ParentNode
是一个原始接口,不能够创建这种类型的对象;它在 Element
、Document
和 DocumentFragment
对象上被实现。
属性 |
描述 |
childElementCount |
返回一个当前 |
children |
返回一个包含 |
firstElementChild |
返回父节点的第一个 |
lastElementChild |
返回父节点的最后一个 |
append() |
在父节点 |
prepend() |
在父节点 |
querySelector() |
返回以当前元素为根元素,匹配给定选择器的第一个元素 |
querySelectorAll() |
返回一个 |
7.childNode
ChildNode
混合了所有(拥有父对象) Node
对象包含的公共方法和属性。其由 Element
、DocumentType
和 CharacterData
对象实现。
属性 |
描述 |
move() |
将 |
before() |
在其父节点的子节点列表中插入一些 |
after() |
在其父节点的子节点列表中插入一些 |
replaceWith |
使用一组 |
8.DOMStringList(已废弃)
9.ProcessingIntroduction
ProcessingInstruction表示处理指令:即,一个节点,其中嵌入针对特定应用程序的指令,但该指令可能被不识别指令的任何其他应用程序忽略。
属性 |
描述 |
data |
设置或返回此处理指令的内容。 (即从目标开始后的第一个非空格字符到结束字符“?>”之间的字符,但不包括“?>”)。 |
before() |
返回此处理指令的目标 它是"<?"后的第一个标识符,指定了处理指令的处理器 |
10.Comment
Comment
接口代表标签(markup)之间的文本符号(textual notations)。尽管它通常不会显示出来,但是在查看源码时可以看到它们。在 HTML 和 XML 里,注释(Comments)为 '' 之间的内容。在 XML 里,注释中不能出现字符序列 '--
'。
属性 |
描述 |
data | 可设置或返回此节点的文本。 |
length | 可返回此节点的文本的长度。 |
appendData() | 向节点追加数据。 |
deleteData() | 从节点删除数据。 |
insertData() | 向节点中插入数据。 |
replaceData() | 替换节点中的数据。 |
substringData() | 从节点中提取数据。 |
11.CustomEvent
CustomEvent
事件是由程序创建的,可以有任意自定义功能的事件。
属性 |
描述 |
detail | 此接口从父接口继承属性, |
initCustomEvent(废弃) | 初始化了一个 |
12.Document
Document
接口表示任何在浏览器中载入的网页,并作为网页内容的入口,也就是DOM 树。DOM 树包含了像 、 这样的元素,以及大量其他元素。它向网页文档本身提供了全局操作功能,能解决如何获取页面的 URL ,如何在文档中创建一个新的元素这样的问题。
Document
接口描述了任何类型的文档的通用属性与方法。根据不同的文档类型(例如HTML、XML、SVG,...),还能使用更多 API:使用 "text/html"
作为内容类型(content type)的 HTML 文档,还实现了 HTMLDocument
接口,而 XML 和 SVG 文档则(额外)实现了 XMLDocument
接口。
属性 |
描述 |
async | 规定 XML 文件的下载是否应当被同步处理。 |
childNodes | 返回属于文档的子节点的节点列表。 |
doctype | 返回与文档相关的文档类型声明 (DTD)。 |
documentElement | 返回文档的根节点 |
documentURI | 设置或返回文档的位置 |
domConfig | 返回normalizeDocument()被调用时所使用的配置 |
firstChild | 返回文档的首个子节点 |
implementation | 返回处理该文档的 DOMImplementation 对象。 |
inputEncoding | 返回用于文档的编码方式(在解析时)。 |
lastChild | 返回文档的最后一个子节点。 |
nodeName | 依据节点的类型返回其名称。 |
nodeType | 返回节点的节点类型。 |
nodeValue | 根据节点的类型来设置或返回节点的值。 |
strictErrorChecking | 设置或返回是否强制进行错误检查。 |
text | 返回节点及其后代的文本(仅用于 IE)。 |
xml | 返回节点及其后代的 XML(仅用于 IE)。 |
xmlEncoding | 返回文档的编码方法。 |
xmlStandalone | 设置或返回文档是否为 standalone。 |
xmlVersion | 设置或返回文档的 XML 版本。 |
adoptNode(sourcenode) | 从另一个文档向本文档选定一个节点,然后返回被选节点。 |
createAttribute(name) | 创建拥有指定名称的属性节点,并返回新的 Attr 对象。 |
createAttributeNS(uri,name) | 创建拥有指定名称和命名空间的属性节点,并返回新的 Attr 对象。 |
createCDATASection() | 创建 CDATA 区段节点。 |
createComment() | 创建注释节点。 |
createDocumentFragment() | 创建空的 DocumentFragment 对象,并返回此对象。 |
createElement() | 创建元素节点。 |
createElementNS() | 创建带有指定命名空间的元素节点。 |
createEvent() | 创建新的 Event 对象。 |
createEntityReference(name) | 创建 EntityReference 对象,并返回此对象。 |
createExpression() | 创建一个XPath表达式以供稍后计算。 |
createProcessingInstruction() | 创建 ProcessingInstruction 对象,并返回此对象。 |
createRange() | 创建 Range 对象,并返回此对象。 |
evaluate() | 计算一个 XPath 表达式。 |
createTextNode() | 创建文本节点。 |
getElementById() | 查找具有指定的唯一 ID 的元素。 |
getElementsByTagName() | 返回所有具有指定名称的元素节点。 |
getElementsByTagNameNS() | 返回所有具有指定名称和命名空间的元素节点。 |
importNode() | 把一个节点从另一个文档复制到该文档以便应用。 |
loadXML() | 通过解析XML标签字符串来组成文档。 |
normalizeDocument() | |
renameNode() | 重命名元素或者属性节点。 |
13.DocumentFragment
DocumentFragment
,文档片段接口,一个没有父对象的最小文档对象。它被作为一个轻量版的 Document
使用,就像标准的document一样,存储由节点(nodes)组成的文档结构。与document相比,最大的区别是DocumentFragment 不是真实 DOM 树的一部分,它的变化不会触发 DOM 树的重新渲染,且不会导致性能等问题。
最常用的方法是使用文档片段作为参数(例如,任何
Node
接口类似 Node.appendChild
和 Node.insertBefore
的方法),这种情况下被添加(append)或被插入(inserted)的是片段的所有子节点, 而非片段本身。因为所有的节点会被一次插入到文档中,而这个操作仅发生一个重渲染的操作,而不是每个节点分别被插入到文档中,因为后者会发生多次重渲染的操作。
该接口在 Web 组件(Web components)中也非常有用:
属性 |
描述 |
|
返回在DocumentFragment 中以文档顺序排列的第一个符合指定选择器的Element 节点。 |
querySelectorAll() |
返回在DocumentFragment 中所有的符合指定选择器的Element 节点组成的NodeList 数组。 |
getElementById() |
返回在 |
14.DocumentType
DocumentType
接口表示了一个包含文档类型的节点 Node
.
属性 |
描述 |
entities | 可返回含有在 DTD 中所声明的实体的 NamedNodeMap |
internalSubset | 以字符串返回内部 DTD |
name | 返回 DTD 的名称 |
notations | 可返回含有在 DTD 中所声明的符号(notation)的 NamedNodeMap |
systemId | 可返回外部 DTD 的系统识别符 |
15.DOMError(已废弃)
DOMError
接口描述一个错误对象,该对象包含一个错误的名字。
属性 |
描述 |
name |
返回一个代表一个错误类型名称的 |
message |
返回一个代表与给定错误类型名称有关的信息或描述 |
error类型
属性 |
描述 |
IndexSizeError | 索引不在允许的范围内 |
HierarchyRequestError | 节点树层次结构是不正确的。 |
WrongDocumentError | 对象是错误的 |
InvalidCharacterError | 字符串包含无效字符。 |
NoModificationAllowedError | 对象不能被修改。 |
NotFoundError | 对象不能在这里被找到。 |
NotSupportedError | 不支持的操作 |
InvalidStateError | 对象是一个无效的状态。 |
SyntaxError | 字符串不匹配预期的模式 |
InvalidModificationError | 对象不能以这种方式被修改 |
NamespaceError | 操作在XML命名空间内是不被允许的 |
InvalidAccessError | 对象不支持这种操作或参数。 |
TypeMismatchError | 对象的类型不匹配预期的类型。 |
SecurityError | 此操作是不安全的。 |
NetworkError | 发生网络错误 |
AbortError | 操作被中止 |
URLMismatchError | 给定的URL不匹配另一个URL。 |
QuotaExceededError | 已经超过给定配额。 |
TimeoutError | 操作超时。 |
InvalidNodeTypeError | 这个操作的 节点或节点祖先 是不正确的 |
DataCloneError | 对象不能克隆。 |
16.DOMException
DOMException
接口代表调用方法或访问 Web API 属性时发生的异常事件(被称为异常,exception)。 这基本上是在 Web API 中如何描述错误情况的。
每个异常都有一个名称 name,一个采用骆驼式命名法的简短字符串,用于描述识别错误或异常情况。
骆驼式命名法(CamelCase style),又称驼峰命名法。与 JavaScript 中更常见的小驼峰命名法有别,此处应是指大驼峰命名法。大驼峰命名法又称 Pascal 命名法。具体为名称中的每个单词仅首字母大写(Capitalize)。
属性 |
描述 |
code |
返回一个 short ,包含 error code constants 中的一个,或者返回 0 ,如果没有匹配的话。这个字段由于历史原因被使用。现在不再使用这个新的DOM异常:他们把这个信息放入 DOMException.name (en-US) 属性。
|
message |
返回一个 DOMString 代表与给定的错误名称有关信息或描述。 |
name |
返回一个 |
错误名称:
属性 |
描述 |
|
索引不在允许的范围内。例如,这可以被 |
HierarchyRequestError | 节点树层次结构有误。(遗留代码值: 3 ,遗留常数名称:HIERARCHY_REQUEST_ERR ) |
WrongDocumentError |
对象在错误的 Document 中。(遗留代码值: 4 ,遗留常数名称: WRONG_DOCUMENT_ERR ) |
InvalidCharacterError |
字符串包含无效字符。(Legacy code value: 5 and legacy constant name: INVALID_CHARACTER_ERR ) |
NoModificationAllowedError |
对象不能被修改。(Legacy code value: 7 and legacy constant name: NO_MODIFICATION_ALLOWED_ERR ) |
NotFoundError |
找不到对象。(Legacy code value: 8 and legacy constant name: NOT_FOUND_ERR ) |
NotSupportedError |
不支持的操作。 (Legacy code value: 9 and legacy constant name: NOT_SUPPORTED_ERR ) |
InvalidStateError |
对象是一个无效的状态. (Legacy code value: 11 and legacy constant name: INVALID_STATE_ERR ) |
SyntaxError |
字符串不匹配预期的模式. (Legacy code value: 12 and legacy constant name: SYNTAX_ERR ) |
InvalidModificationError |
对象不能被这种方式修改。 (Legacy code value: 13 and legacy constant name: INVALID_MODIFICATION_ERR ) |
NamespaceError |
操作在XML名称空间是不允许的. (Legacy code value: 14 and legacy constant name: NAMESPACE_ERR ) |
InvalidAccessError |
对象不支持此操作或参数 (Legacy code value: 15 and legacy constant name: INVALID_ACCESS_ERR ) |
TypeMismatchError
|
对象的类型不匹配预期的类型. (Legacy code value: 17 and legacy constant name: TYPE_MISMATCH_ERR ) 这个值已被弃用, JavaScript TypeError 异常被提出而不是DOMException
|
SecurityError
|
操作不安全。 (Legacy code value: 18 and legacy constant name: SECURITY_ERR ) |
NetworkError
|
网络错误发生. (Legacy code value: 19 and legacy constant name: NETWORK_ER R ) |
AbortError
|
T操作中止. (Legacy code value: 20 and legacy constant name: ABORT_ERR ) |
URLMismatchError
|
给定的URL不匹配另一个URL。 (Legacy code value: 21 and legacy constant name: URL_MISMATCH_ERR ) |
QuotaExceededError
|
给定配额已经超过了(Legacy code value: 22 and legacy constant name: QUOTA_EXCEEDED_ERR ) |
QuotaExceededError
|
给定配额已经超过了(Legacy code value: 22 and legacy constant name: QUOTA_EXCEEDED_ERR ) |
|
操作超时. (Legacy code value: 23 and legacy constant name: TIMEOUT_ERR ) |
|
这个操作的节点是不正确的或祖先是不正确的. (Legacy code value: 24 and legacy constant name: INVALID_NODE_TYPE_ERR ) |
sDataCloneError
|
对象不可被克隆。 (Legacy code value: 25 and legacy constant name: DATA_CLONE_ERR ) |
EncodingError
|
编码或解码操作失败 (没有遗留代码值和常量的名字). |
NotReadableError
|
输入/输出读操作失败(没有遗留代码值和常量的名字). |
UnknownError
|
因未知的瞬态的原因使操作失败(例如 内存不足) (No legacy code value and constant name). |
ConstraintError
|
条件没满足而导致事件失败的异常操作 (No legacy code value and constant name). |
DataError
|
提供的数据不足 (No legacy code value and constant name). |
TransactionInactiveError
|
请求被当前不活跃的事件或已完成事件阻止 (No legacy code value and constant name)。 |
ReadOnlyError
|
尝试操作 "readonly" 事件 (No legacy code value and constant name)。 |
VersionError
|
尝试打开一个比现有版本更低的数据库(No legacy code value and constant name)。 |
OperationError
|
因特定操作失败原因而失败 (No legacy code value and constant name). |
NotAllowedError
|
<dd请求不被用户代理或当前上下文所在平台允许,可能因为用户拒绝授权 (no="" and="" code="" constant="" dd="" legacy="" name)。<="" value=""> </dd请求不被用户代理或当前上下文所在平台允许,可能因为用户拒绝授权> |
17.DOMImplenatation
DOMImplementation
接口代表了一个对象,这个对象提供了不依赖于任何document的方法。这个对象可以通过Document.implementation
属性获得
属性 |
描述 |
createDocument() | 创建一个新 Document 对象和指定的根元素。 |
createDocumentType() | 创建空的 DocumentType 节点。 |
getFeature() | 返回可执行定义特性和版本的 API 的对象。 |
hasFeature() | 检查 DOM implementation 是否可执行指定的特性和版本。 |
18.DOMString
DOMString
是一个UTF-16字符串。由于JavaScript已经使用了这样的字符串,所以DOMString 直接映射到 一个String
。
将 null
传递给接受DOMString的方法或参数时通常会把其stringifies为“null”。
19.DOMTokenList
DOMTokenList
接口表示一组空格分隔的标记(tokens)。如由 Element.classList
、HTMLLinkElement.relList
(en-US)、HTMLAnchorElement.relList
(en-US) 或 HTMLAreaElement.relList
(en-US) 返回的一组值。它和 JavaScript Array
对象一样,索引从 0 开始。DOMTokenList
总是区分大小写(case-sensitive)。
属性 |
描述 |
length |
一个整数,表示存储在该对象里值的个数。 |
value |
该属性以 |
item(index) |
根据传入的索引值返回一个值,如果索引值大于等于符号列表的长度(length ),则返回 undefined 或 null ,在 Gecko 7.0 之前的版本中返回 null 。 |
contains(token) |
如果 DOMTokenList 列表中包括相应的字符串 token ,则返回 true ,否则返回 false 。 |
add(token1[, token2[, ...tokenN]]) |
添加一个或多个标记(token )到 DOMTokenList 列表中。 |
remove(token1[, token2[, ...tokenN]]) |
从 DOMTokenList 列表中移除一个或多个标记(token )。 |
replace(oldToken, newToken) |
使用 newToken 替换 token 。 |
supports(token) |
如果传入的 token 是相关属性(attribute)支持的标记,则返回 true 。 |
toggle(token [, force]) |
从 DOMTokenList 字符串中移除标记字串(token ),并返回 false 。如果传入的字串(token )不存在,则将其添加进去,并返回 true 。force 是一个可选的布尔值,如果传入 true ,且传入的 token 不存在,则将其添加进去并返回 true ,若传入的 token 存在,则直接返回 true ;反之,如果传入 false ,则移除存在的 token ,并返回 false ,如 token 不存在则直接返回 false 。 |
entries() |
返回一个迭代器(iterator ) ,以遍历这个对象中的所有键值对。 |
forEach(callback [, thisArg]) |
为每个 |
keys() |
返回一个迭代器(iterator )以遍历这个对象中所有键值对的键。 |
values() |
返回一个迭代器( |
20.Element
Element
是一个通用性非常强的基类,所有 Document
对象下的对象都继承自它。这个接口描述了所有相同种类的元素所普遍具有的方法和属性。一些接口继承自 Element
并且增加了一些额外功能的接口描述了具体的行为。例如, HTMLElement
接口是所有 HTML 元素的基本接口,而 SVGElement
接口是所有 SVG 元素的基础。大多数功能是在这个类的更深层级(hierarchy)的接口中被进一步制定的。
在 Web 平台的领域以外的语言,比如 XUL,通过 XULElement
接口,同样也实现了 Element
接口。
属性 |
描述 |
attributes | 返回元素的属性的 NamedNodeMap |
baseURI | 返回元素的绝对基准 URI |
childNodes | 返回元素的子节点的 NodeList |
firstChild | 返回元素的首个子节点 |
lastChild | 返回元素的最后一个子节点 |
localName | 返回元素名称的本地部分 |
namespaceURI | 返回元素的命名空间 URI |
nextSibling | 返回元素之后紧跟的节点 |
nodeName | 返回节点的名称,依据其类型。 |
nodeType | 返回节点的类型 |
ownerDocument | 返回元素所属的根元素 (document 对象) |
parentNode | 返回元素的父节点 |
prefix | 设置或返回元素的命名空间前缀 |
previousSibling | 返回元素之前紧随的节点 |
schemaTypeInfo | 返回与元素相关联的类型信息 |
tagName | 返回元素的名称 |
textContent | 设置或返回元素及其后代的文本内容 |
text | 返回节点及其后代的文本 (IE-only) |
xml | 返回节点及其后代的 XML (IE-only) |
appendChild() | 向节点的子节点列表末尾添加新的子节点。 |
cloneNode() | 克隆节点。 |
compareDocumentPosition() | 比较两节点的文档位置。 |
dispatchEvent() | 给节点分派一个合成事件。 |
getAttribute() | 返回属性的值。 |
getAttributeNS() | 返回属性的值。 |
getAttributeNode() | 以 Attribute 对象返回属性节点。 |
getAttributeNodeNS() | 以 Attribute 对象返回属性节点。 |
getElementsByTagName() | 找到具有指定标签名的子孙元素。 |
getElementsByTagNameNS() | 找到具有指定标签名和命名空间的元素。 |
getFeature(feature,version) | 返回 DOM 对象,此对象可执行拥有指定特性和版本的专门的 API。 |
getUserData(key) | 返回关联节点上键的对象。此对象必须首先通过使用相同的键来调用 setUserData 来设置到此节点。 |
hasAttribute() | 返回元素是否拥有指定的属性。 |
hasAttributeNS() | 返回元素是否拥有指定的属性。 |
hasAttributes() | 返回元素是否拥有属性。 |
hasChildNodes() | 返回元素是否拥有子节点。 |
insertBefore() | 在已有的子节点之前插入一个新的子节点。 |
isDefaultNamespace(URI) | 返回指定的命名空间 URI 是否为默认。 |
isEqualNode() | 检查两节点是否相等。 |
isSameNode() | 检查两节点是否为同一节点。 |
isSupported(feature,version) | 返回指定的特性是否在此元素上得到支持。 |
lookupNamespaceURI() | 返回匹配指定前缀的命名空间 URI。 |
lookupPrefix() | 返回匹配指定的命名空间 URI 的前缀。 |
normalize() | |
removeAttribute() | 删除指定的属性。 |
removeAttributeNS() | 删除指定的属性。 |
removeAttributeNode() | 删除指定的属性节点。 |
removeChild() | 删除子节点。 |
replaceChild() | 替换子节点。 |
setUserData(key,data,handler) | 把对象关联到元素上的键。 |
setAttribute() | 添加新属性。 |
setAttributeNS() | 添加新属性。 |
setAttributeNode() | 添加新的属性节点。 |
setAttributeNodeNS(attrnode) | 添加新的属性节点。 |
setIdAttribute(name,isId) | 如果 Attribute 对象 isId 属性为 true,那么此方法会把指定的属性声明为一个用户确定 ID 的属性(user-determined ID attribute)。 |
setIdAttributeNS(uri,name,isId) | 如果 Attribute 对象 isId 属性为 true,那么此方法会把指定的属性声明为一个用户确定 ID 的属性(user-determined ID attribute)(带有命名空间)。 |
setIdAttributeNode(idAttr,isId) | 如果 Attribute 对象 isId 属性为 true,那么此方法会把指定的属性声明为一个用户确定 ID 的属性(user-determined ID attribute)。 |
21.event
Event
接口表示在 DOM 中出现的事件。
一些事件是由用户触发的,例如鼠标或键盘事件;而其他事件常由 API 生成,例如指示动画已经完成运行的事件,视频已被暂停等等。事件也可以通过脚本代码触发,例如对元素调用 HTMLElement.click()
方法,或者定义一些自定义事件,再使用 EventTarget.dispatchEvent()
方法将自定义事件派发往指定的目标(target)。
有许多不同类型的事件,其中一些使用基于 Event
主接口的二次接口。Event
本身包含适用于所有事件的属性和方法。
很多DOM元素可以被设计接收(或者监听) 这些事件, 并且执行代码去响应(或者处理)它们。通过EventTarget.addEventListener()
方法可以将事件处理函数绑定到不同的HTML elements上 (比如,
, 等等) 。这种绑定事件处理函数的方式基本替换了老版本中使用HTML event handler attributes来绑定事件处理函数的方式。除此之外,通过正确使用removeEventListener()
方法,这些事件处理函数也能被移除。
Note: 一个元素可以绑定多个事件处理函数,甚至是同一种类型的事件。尤其是这种分离的,并且相互独立的代码模块对同一个元素绑定事件处理函数,每一个模块代码都有着独立的目的。(比如,一个网页同时有着广告模块和统计模块同时监听视频播放元素)
当有很多嵌套的元素,并且每一个元素都有着自己的事件处理函数,事件处理过程会变得非常复杂。尤其当一个父元素和子元素绑定有相同类型的事件处理函数的时候。因为结构上的重叠,事件处理函数可能会依次被触发,触发的顺序取决于事件冒泡和事件捕获在每一个元素上的设置情况。
属性 |
描述 |
bubbles | 返回布尔值,指示事件是否是起泡事件类型。 |
cancelable | 返回布尔值,指示事件是否可拥可取消的默认动作。 |
currentTarget | 返回其事件监听器触发该事件的元素。 |
eventPhase | 返回事件传播的当前阶段。 |
target | 返回触发此事件的元素(事件的目标节点)。 |
timeStamp | 返回事件生成的日期和时间。 |
type | 返回当前 Event 对象表示的事件的名称。 |
initEvent() | 初始化新创建的 Event 对象的属性。 |
preventDefault() | 通知浏览器不要执行与事件关联的默认动作。 |
stopPropagation() | 终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。 |
22.EventTarget
EventTarget
是一个 DOM 接口,由可以接收事件、并且可以创建侦听器的对象实现。
Element
,document
和 window
是最常见的 event targets ,但是其他对象也可以作为 event targets,比如 XMLHttpRequest
,AudioNode
,AudioContext
等等。
许多 event targets (包括 elements, documents 和 windows)支持通过 onevent
特性和属性设置事件处理程序 (en-US) (event handlers)。
属性 |
描述 |
addEventListener() |
在EventTarget上注册特定事件类型的事件处理程序。 |
removeEventListener() |
EventTarget中删除事件侦听器。 |
|
将事件分派到此EventTarget。 |
23.HTMLCollection
HTMLCollection
接口表示一个包含了元素(元素顺序为文档流中的顺序)的通用集合(generic collection),还提供了用来从该集合中选择元素的方法和属性。
注意:由于历史原因(DOM4之前,实现该接口的集合只能包含 HTML 元素),该接口被称为 HTMLCollection。
HTML DOM 中的 HTMLCollection
是即时更新的(live);当其所包含的文档结构发生改变时,它会自动更新。
属性 |
描述 |
cssRules | 只读属性,返回指示列表长度的整数(即集合中的元素数)。 |
item() | 返回集合中指定位置的元素(节点)。 |
namedItem() | 返回集合中 name 属性或 id 属性具有指定值的元素(节点)。 |
24.MutationObserver
MutationObserver
接口提供了监视对DOM树所做更改的能力。它被设计为旧的Mutation Events功能的替代品,该功能是DOM3 Events规范的一部分。
属性 |
描述 |
disconnect() |
阻止 MutationObserver 实例继续接收的通知,直到再次调用其observe()方法,该观察者对象包含的回调函数都不会再被调用。 |
observe() |
配置MutationObserver在DOM更改匹配给定选项时,通过其回调函数开始接收通知。 |
takeRecords() |
从MutationObserver的通知队列中删除所有待处理的通知,并将它们返回到MutationRecord对象的新Array中。 |
25.MutationRecord
每个 MutationRecord
都代表一个独立的 DOM 变化,在每次随 DOM 变化调用 MutationObserver
的回调函数时,一个相应的 MutationRecord
会被作为参数,传递给回调函数。
属性 |
描述 |
type | 如果是属性变化,则返回 "attributes"; 如果是 characterData 节点变化,则返回 "characterData"; 如果是子节点树 childList 变化,则返回 "childList"。 |
target | 根据 MutationRecord.type,返回变化所影响的节点。 对于属性 attributes 变化,返回属性变化的节点。 对于 characterData 变化,返回 characterData 节点。 对于子节点树 childList 变化,返回子节点变化的节点。 |
addedNodes | 返回被添加的节点。 如果没有节点被添加,则该属性将是一个空的 NodeList。 |
removedNodes | 返回被移除的节点。 如果没有节点被移除,则该属性将是一个空的 NodeList。 |
previousSibling | 返回被添加或移除的节点之前的兄弟节点,或者 null。 |
nextSibling | 返回被添加或移除的节点之后的兄弟节点,或者 null。 |
attributeName | 返回被修改的属性的属性名,或者 null。 |
attributeNamespace | 返回被修改属性的命名空间,或者 null。 |
oldValue |
返回值取决于 MutationRecord.type。 注意,如果要让这个属性起作用,在相应的 MutationObserverInit 参数的 MutationObserver observe 方法中,attributeOldValue 或者 characterDataOldValue 必须设置为 true。 |
26.Node
Node
是一个接口,各种类型的 DOM API 对象会从这个接口继承。它允许我们使用相似的方式对待这些不同类型的对象;比如, 继承同一组方法,或者用同样的方式测试。
以下接口都从 Node
继承其方法和属性:
Document
, Element
, Attr
, CharacterData
(which Text
, Comment
, and CDATASection
inherit), ProcessingInstruction
(en-US), DocumentFragment
, DocumentType
, Notation
, Entity
, EntityReference
在方法和属性不相关的特定情况下,这些接口可能返回 null
。它们可能会抛出异常 - 例如,当将子节点添加到不允许子节点存在的节点时。
属性 |
描述 |
baseURI | 返回节点的绝对基准 URI。 |
childNodes | 返回节点到子节点的节点列表。 |
firstChild | 返回节点的首个子节点。 |
lastChild | 返回节点的最后一个子节点。 |
localName | 返回节点的本地名称。 |
namespaceURI | 返回节点的命名空间 URI。 |
nextSibling | 返回节点之后紧跟的同级节点。 |
nodeName | 返回节点的名称,根据其类型。 |
nodeType | 返回节点的类型。 |
nodeValue | 设置或返回节点的值,根据其类型。 |
ownerDocument | 返回节点的根元素(document 对象)。 |
parentNode | 返回节点的父节点。 |
prefix | 设置或返回节点的命名空间前缀。 |
previousSibling | 返回节点之前紧跟的同级节点。 |
textContent | 设置或返回节点及其后代的文本内容。 |
text | 返回节点及其后代的文本(IE 独有的属性)。 |
xml | 返回节点及其后代的 XML(IE 独有的属性)。 |
appendChild() | 向节点的子节点列表的结尾添加新的子节点。 |
cloneNode() | 复制节点。 |
compareDocumentPosition() | 对比两个节点的文档位置。 |
getFeature(feature,version) | 返回一个 DOM 对象,此对象可执行带有指定特性和版本的专门的 API。 |
getUserData(key) | 返回与此节点上的某个键相关联的对象。此对象必须首先通过使用相同的键来调用 setUserData 被设置到此节点。 |
hasAttributes() | 判断当前节点是否拥有属性。 |
hasChildNodes() | 判断当前节点是否拥有子节点。 |
insertBefore() | 在指定的子节点前插入新的子节点。 |
isDefaultNamespace(URI) | 返回指定的命名空间 URI 是否为默认。 |
isEqualNode() | 检查两个节点是否相等。 |
isSameNode() | 检查两个节点是否是相同的节点。 |
isSupported() | 返回当前节点是否支持某个特性。 |
lookupNamespaceURI() | 返回匹配指定前缀的命名空间 URI。 |
lookupPrefix() | 返回匹配指定命名空间 URI 的前缀。 |
normalize() | 合并相邻的Text节点并删除空的Text节点。 |
removeChild() | 删除(并返回)当前节点的指定子节点。 |
replaceChild() | 用新节点替换一个子节点。 |
selectNodes() | 用一个 XPath 表达式查询选择节点。 |
selectSingleNode() | 查找和 XPath 查询匹配的一个节点。 |
transformNode() | 使用 XSLT 把一个节点转换为一个字符串。 |
transformNodeToObject() | 使用 XSLT 把一个节点转换为一个文档。 |
setUserData(key,data,handler) | 把对象关联到节点上的一个键上。 |
27.NodeFilter
NodeFilter
接口表示一个对象,此对象用于过滤 NodeIterator
或 TreeWalker
中的节点。它既不能处理 DOM,也不能遍历节点;它只能根据提供的过滤器对单个节点进行判定。
注意:浏览器不提供任何实现该接口的对象。用户需要自己编写该对象,根据需要自行定制 acceptNode() 方法,以用于TreeWalker 或 NodeIterator 对象。
属性 |
描述 |
acceptNode() |
返回一个 unsigned short ,用于表示提供的Node 是否需要被NodeIterator 或 TreeWalker 迭代算法所接受。这个方法应由使用 NodeFilter 的用户编写。
|
可能的值如下:
常量 | 描述 |
FILTER_ACCEPT | 当需要接受一个节点时,NodeFilter.acceptNode()返回该值。 |
FILTER_REJECT | 当需要拒绝一个节点时,NodeFilter.acceptNode()返回该值。对于 TreeWalker,这个节点的子节点也会被拒绝。对于 NodeIterator,这个常量的表现与FILTER_SKIP一样。 |
FILTER_SKIP | 当NodeIterator 或 TreeWalker 对象需要跳过一个节点时,NodeFilter.acceptNode()返回该值。但被跳过节点的子节点仍会被考虑,意即“跳过该节点但不包括其子节点”。 |
28.NodeIterator
NodeIterator
接口表示一个遍历 DOM 子树中节点列表的成员的迭代器。节点将按照文档顺序返回。
NodeIterator可以使用Document.createNodeIterator()
方法创建,如下所示:
var nodeIterator = document.createNodeIterator(root, whatToShow, filter);
属性 |
描述 |
root |
返回一个Node ,它代表创建 NodeIterator 时指定的根节点。 |
whatToShow |
返回一个无符号长整型,它是一个由描述必须呈现的Node类型的常量构成的位掩码。不匹配的节点被跳过,但是如果相关,他们的子节点可能被包括在内。 |
filter |
返回一个用来选择相关节点的 NodeFilter . |
expandEntityReferences | 不推荐 |
referenceNode | 返回当前遍历到的 Node . |
pointerBeforeReferenceNode | 实验性:返回一个Boolean标志,该标志指示NodeFilter是否在(如果此值是)之前或之后(如果此值是)Node指示的锚节点。 |
detach() |
这个方法不是必需的. 它现在什么也不做. 之前用来告诉引擎,NodeIterator 已经不会再使用,现在已经不做任何事情. |
previousNode() |
返回前一个 Node ,如果不存在则返回 null. |
nextNode() |
返回下一个 Node , 如果不存在则返回null . |
29.Range
Range
接口表示一个包含节点与文本节点的一部分的文档片段。
可以用 Document
对象的 Document.createRange
方法创建 Range,也可以用 Selection
对象的 getRangeAt
方法获取 Range。另外,还可以通过 Document
对象的构造函数 Range()
来得到 Range。
属性 |
描述 |
collapsed | 如果范围的开始点和结束点在文档的同一位置,则为 true,即范围是空的,或折叠的。 |
commonAncestorContainer | 范围的开始点和结束点的(即它们的祖先节点)、嵌套最深的 Document 节点。 |
endContainer | 包含范围的结束点的 Document 节点。 |
endOffset | endContainer 中的结束点位置。 |
startContainer | 包含范围的开始点的 Document 节点。 |
startOffset | startContainer 中的开始点位置。 |
cloneContents() | 返回新的 DocumentFragment 对象,它包含该范围表示的文档区域的副本。 |
cloneRange() | 创建一个新的 Range 对象,表示与当前的 Range 对象相同的文档区域。 |
collapse() | 折叠该范围,使它的边界点重合。 |
compareBoundaryPoints() | 比较指定范围的边界点和当前范围的边界点,根据它们的顺序返回 -1、0 和 1。比较哪个边界点由它的第一个参数指定,它的值必须是前面定义的常量之一。 |
deleteContents() | 删除当前 Range 对象表示的文档区域。 |
detach() | 通知实现不再使用当前的范围,可以停止跟踪。如果调用了范围的这个方法,那么接下来调用的该范围任何方法都会抛出代码为 INVALID_STATE_ERR 的 DOMException 异常。 |
extractContents() | 删除当前范围表示的文档区域,并且以 DocumentFragment 对象的形式返回那个区域的内容。该方法和 cloneContents() 方法与 deleteContents() 方法的组合很相似。 |
insertNode() | 把指定的节点插入文档范围的开始点。 |
selectNode() | 设置该范围的边界点,使它包含指定的节点和它的所有子孙节点。 |
selectNodeContents() | 设置该范围的边界点,使它包含指定节点的子孙节点,但不包含指定的节点本身。 |
setEnd() | 把该范围的结束点设置为指定的节点和偏移量。 |
setEndAfter() | 把该范围的结束点设置为紧邻指定节点的节点之后。 |
setEndBefore() | 把该范围的结束点设置为紧邻指定节点之前。 |
setStart() | 把该范围的开始点设置为指定的节点中的指定偏移量。 |
setStartAfter() | 把该范围的开始点设置为紧邻指定节点的节点之后。 |
setStartBefore() | 把该范围的开始点设置为紧邻指定节点之前。 |
surroundContents() | 把指定的节点插入文档范围的开始点,然后重定范围中的所有节点的父节点,使它们成为新插入的节点的子孙节点。 |
toString() | 返回该范围表示的文档区域的纯文本内容。 |
30.Text
Text 节点表示 HTML 或 XML 文档中的一系列纯文本。因为纯文本出现在 HTML 和 XML 的元素和属性中,所以 Text 节点通常作为 Element 节点和 Attr 节点的子节点出现。
Text 节点继承了 CharacterData 接口,通过从 CharacterData 接口继承的 data 属性或从 Node 接口继承的 nadevalue 属性,可以访问 Text 节点的文本内容。
用从 CharacterData 继承的方法或 Text 接口自身定义的 splitText() 方法可以操作 Text 节点。使用 document.createTextNode() 来创建一个新的 Text 节点。
Text 节点没有子节点。
属性 |
描述 |
data | 设置或返回元素或属性的文本 |
isElementContentWhitespace | 判断文本节点是否包含空白字符内容。 |
length | 返回元素或属性的文本长度 |
wholeText | 以文档中的顺序向此节点返回相邻文本节点的所有文本 |
appendData() | 向节点追加数据 |
deleteData() | 从节点删除数据 |
insertData() | 向节点中插入数据 |
replaceData() | 替换节点中的数据 |
replaceWholeText() | 使用指定文本来替换此节点以及所有相邻的文本节点 |
splitText() | 把一个 Text 节点分割成两个。 |
substringData() | 从节点提取数据 |
31.TreeWalker
TreeWalker
对象用于表示文档子树中的节点和它们的位置。
TreeWalker
可以使用 Document.createTreeWalker()
方法创建。
属性 |
描述 |
root |
返回一个 Node ,表示新建 TreeWalker 时所声明的根节点。 |
whatToShow |
返回一个 unsigned long 类型的常量位掩码,表示需要筛选的Node 类型。不匹配的节点会跳过,但其子节点,如果符合条件,则也会被包含。
|
filter |
返回一个实现NodeFilter 接口的对象,这个对象用来挑选相关的节点。 |
expandEntityReferences | 是个Boolean (en-US)的标记,表明是否在丢弃一个EntityReference 是否同时丢弃其后代。 |
currentNode |
返回 |
parentNode() |
移动当前 Node 到文档顺序中的第一个“可见”的祖先节点,并返回该节点。如果没有这样的节点,则会返回 null ,同时也不会发生移动。
|
firstChild() |
移动当前 Node 到当前节点的第一个“可见”子节点,并返回该节点。如果没有这样的节点,则会返回 null ,同时也不会发生移动。
|
lastChild() |
移动当前 Node 到当前节点的最末一个“可见”子节点,并返回该节点。如果没有这样的节点,则会返回 null ,同时也不会发生移动。
|
previousSibling() |
移动当前 Node 到当前节点的前一个兄弟节点,并返回该节点。如果没有这样的节点,则会返回 null ,同时也不会发生移动。
|
nextSibling() |
移动当前 Node 到当前节点的后一个兄弟节点,并返回该节点。如果没有这样的节点,则会返回 null ,同时也不会发生移动。
|
previousSibling() |
移动当前 Node 到文档顺序中前一个节点,并返回该节点。如果没有这样的节点,则会返回 null ,同时也不会发生移动。
|
nextNode() |
移动当前 Node 到文档顺序中下一个节点,并返回该节点。如果没有这样的节点,则会返回 null ,同时也不会发生移动。
|
32.URL
URL
接口用于解析,构造,规范化和编码 URLs。 它通过提供允许您轻松阅读和修改URL组件的属性来工作。 通常,通过在调用URL的构造函数时将URL指定为字符串或提供相对URL和基本URL来创建新的URL对象。 然后,您可以轻松读取URL的已解析组成部分或对URL进行更改。
如果浏览器尚不支持URL()
构造函数,则可以使用Window
中的Window.URL
属性。 确保检查您的任何目标浏览器是否要求对此添加前缀。
属性 |
描述 |
hash |
包含'#' 的USVString ,后跟URL的片段标识符。 |
host |
一个USVString ,其中包含域(即主机名),后跟(如果指定了端口)“:”和URL的端口。 |
hostname |
包含 URL 域名的 USVString 。 |
href |
包含完整 URL 的 USVString 。 |
origin |
返回一个包含协议名、域名和端口号的 USVString 。 |
password |
包含在域名前面指定的密码的 USVString 。 |
pathname |
以 '/' 起头紧跟着 URL 文件路径的 DOMString 。 |
port |
包含 URL 端口号的 USVString 。 |
protocol |
包含 URL 协议名的 USVString ,末尾带 ':'。
|
search |
一个USVString ,指示URL的参数字符串; 如果提供了任何参数,则此字符串包括所有参数,并以开头的“?”开头 字符。 |
searchParams |
URLSearchParams 对象,可用于访问search 中找到的各个查询参数。 |
username |
包含在域名前面指定的用户名的 |
toString() |
返回包含整个URL的USVString 。 它是URL.href 的同义词,尽管它不能用于修改值。 |
toJSON() |
返回包含整个URL的 |
createObjectURL() |
返回一个DOMString ,包含一个唯一的blob链接(该链接协议为以blob:,后跟唯一标识浏览器中的对象的掩码)。 |
revokeObjectURL() |
销毁之前使用 |
33.window
window
对象表示一个包含DOM文档的窗口,其 document
属性指向窗口中载入的 DOM文档 。使用 document.defaultView
属性可以获取指定文档所在窗口。
window
作为全局变量,代表了脚本正在运行的窗口,暴露给 Javascript 代码。
本节为 DOM Window
对象中可用的所有方法、属性和事件提供简要参考。window
对象实现了 Window
接口,此接口继承自 AbstractView
接口。一些额外的全局函数、命名空间、对象、接口和构造函数与 window 没有典型的关联,但却是有效的,它们在 JavaScript参考 和 DOM参考 中列出。
在有标签页功能的浏览器中,每个标签都拥有自己的 window
对象;也就是说,同一个窗口的标签页之间不会共享一个 window
对象。有一些方法,如 window.resizeTo
和 window.resizeBy
之类的方法会作用于整个窗口而不是 window
对象所属的那个标签。一般而言,如果一样东西无法恰当地作用于标签,那么它就会作用于窗口。
属性 |
描述 |
closed | 返回窗口是否已被关闭。 |
defaultStatus | 设置或返回窗口状态栏中的默认文本。 |
document | 对 Document 对象的只读引用。请参阅 Document 对象。 |
history | 对 History 对象的只读引用。请参数 History 对象。 |
innerheight | 返回窗口的文档显示区的高度。 |
innerwidth | 返回窗口的文档显示区的宽度。 |
length | 设置或返回窗口中的框架数量。 |
location | 用于窗口或框架的 Location 对象。请参阅 Location 对象。 |
name | 设置或返回窗口的名称。 |
Navigator | 对 Navigator 对象的只读引用。请参数 Navigator 对象。 |
opener | 返回对创建此窗口的窗口的引用。 |
outerheight | 返回窗口的外部高度。 |
outerwidth | 返回窗口的外部宽度。 |
pageXOffset | 设置或返回当前页面相对于窗口显示区左上角的 X 位置。 |
pageYOffset | 设置或返回当前页面相对于窗口显示区左上角的 Y 位置。 |
parent | 返回父窗口。 |
Screen | 对 Screen 对象的只读引用。请参数 Screen 对象。 |
self | 返回对当前窗口的引用。等价于 Window 属性。 |
status | 设置窗口状态栏的文本。 |
top | 返回最顶层的先辈窗口。 |
window | window 属性等价于 self 属性,它包含了对窗口自身的引用。 |
screenLeft screenTop screenX screenY |
只读整数。声明了窗口的左上角在屏幕上的的 x 坐标和 y 坐标。IE、Safari 和 Opera 支持 screenLeft 和 screenTop,而 Firefox 和 Safari 支持 screenX 和 screenY。 |
alert() | 显示带有一段消息和一个确认按钮的警告框。 |
blur() | 把键盘焦点从顶层窗口移开。 |
clearInterval() | 取消由 setInterval() 设置的 timeout。 |
clearTimeout() | 取消由 setTimeout() 方法设置的 timeout。 |
close() | 关闭浏览器窗口。 |
confirm() | 显示带有一段消息以及确认按钮和取消按钮的对话框。 |
createPopup() | 创建一个 pop-up 窗口。 |
focus() | 把键盘焦点给予一个窗口。 |
moveBy() | 可相对窗口的当前坐标把它移动指定的像素。 |
moveTo() | 把窗口的左上角移动到一个指定的坐标。 |
open() | 打开一个新的浏览器窗口或查找一个已命名的窗口。 |
print() | 打印当前窗口的内容。 |
prompt() | 显示可提示用户输入的对话框。 |
resizeBy() | 按照指定的像素调整窗口的大小。 |
resizeTo() | 把窗口的大小调整到指定的宽度和高度。 |
scrollBy() | 按照指定的像素值来滚动内容。 |
scrollTo() | 把内容滚动到指定的坐标。 |
setInterval() | 按照指定的周期(以毫秒计)来调用函数或计算表达式。 |
setTimeout() | 在指定的毫秒数后调用函数或计算表达式。 |
Window 对象表示一个浏览器窗口或一个框架。在客户端 JavaScript 中,Window 对象是全局对象,所有的表达式都在当前的环境中计算。也就是说,要引用当前窗口根本不需要特殊的语法,可以把那个窗口的属性作为全局变量来使用。例如,可以只写 document,而不必写 window.document。
同样,可以把当前窗口对象的方法当作函数来使用,如只写 alert(),而不必写 Window.alert()。
除了上面列出的属性和方法,Windos 对象还实现了核心 JavaScript 所定义的所有全局属性和方法。
Window 对象的 window 属性和 self 属性引用的都是它自己。当你想明确地引用当前窗口,而不仅仅是隐式地引用它时,可以使用这两个属性。除了这两个属性之外,parent 属性、top 属性以及 frame[] 数组都引用了与当前 Window 对象相关的其他 Window 对象。
34.worker
Worker 接口是 Web Workers API 的一部分,指的是一种可由脚本创建的后台任务,任务执行中可以向其创建者收发信息。要创建一个 Worker ,只须调用 Worker(URL)
构造函数,函数参数 `URL` 为指定的脚本。
Worker 也可以创建新的 Worker,当然,所有 Worker 必须与其创建者同源(注意:Blink暂时不支持嵌套 Worker)。
需要注意的是,不是所有函数和构造函数(或者说…类)都可以在 Worker 中使用。具体参考页面 Worker 所支持的函数和类。Worker 可以使用 XMLHttpRequest
发送请求,但是请求的 responseXML
与 channel
两个属性值始终返回 null
(fetch
仍可正常使用,没有类似的限制)。
属性 |
描述 |
onmessage | 当MessageEvent类型的事件冒泡到 worker 时,事件监听函数 EventListener 被调用. 例如,一个消息通过 DedicatedWorkerGlobalScope.postMessage (en-US),从执行者发送到父页面对象,消息保存在事件对象的 data (en-US) 属性中. |
onmessageerror | 当messageerror 类型的事件发生时,对应的event handler 代码被调用。 |
postMessage() | 发送一条消息到最近的外层对象,消息可由任何 JavaScript 对象组成。 |
terminate() | 立即终止 worker。该方法不会给 worker 留下任何完成操作的机会;就是简单的立即停止。Service Woker 不支持这个方法。 |
35.XMLDocument
XML文件接口表示 XML 文档。它继承了通用document,并且没有添加任何特定的方法或属性:但是,与这两种类型的文档,几个算法的行为不同。
属性 |
描述 |
async |
用于 |
load() |
加载 XML 文档。 |