dom.js
成员
(静态, 常量) $
在另一个DOM元素(默认为document
)的可选context
中查找匹配selector
的单个DOM元素。
(静态, 常量) $$
在另一个DOM元素(默认为document
)的可选context
中查找所有匹配selector
的DOM元素。
方法
(静态) addClass(element, …classesToAdd) → {Element}
向元素添加类名。
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
element | 元素 | 要添加类名的元素。 | |
要添加的类 | string | <可重复> | 一个或多个要添加的类名。 |
添加类名后的DOM元素。
- 类型:
- 元素
(静态) appendContent(el, content) → {Element}
规范化内容并将其附加到元素。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 要附加规范化内容的元素。 |
内容 | ContentDescriptor | 内容描述符值。 |
附加规范化内容后的元素。
- 类型:
- 元素
(静态) blockTextSelection()
尝试阻止文本选择功能。
(静态) computedStyle(el, prop)
一个安全的getComputedStyle方法。
这是必需的,因为在Firefox中,如果播放器加载在display:none
的iframe中,则getComputedStyle
会返回null
,因此我们进行空值检查以确保播放器在这些情况下不会出错。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 您要获取计算样式的元素 |
prop | string | 您想要的属性名称 |
(静态) copyStyleSheetsToWindow(win)
将文档样式表复制到另一个窗口。
名称 | 类型 | 描述 |
---|---|---|
win | Window | 您要复制文档样式表的目标窗口元素。 |
(静态) createEl(tagName可选, properties可选, attributes可选, content可选) → {Element}
创建元素并应用属性、特性和插入内容。
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
tagName (标签名) | string | <可选> | 'div' | 要创建的标签名称。 |
properties (属性) | Object | <可选> | {} | 要应用的元素属性。 |
属性 | Object | <可选> | {} | 要应用的元素特性。 |
内容 | ContentDescriptor | <可选> | 内容描述符对象。 |
创建的元素。
- 类型:
- 元素
(静态) emptyEl(el) → {Element}
清空元素的内容。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 要清空子元素的元素 |
没有子元素的元素
- 类型:
- 元素
(静态) findPosition(el) → {module:dom~Position}
获取元素在DOM中的位置。
使用John Resig的getBoundingClientRect
技术。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 要获取偏移量的元素。 |
传入元素的定位。
(静态) getAttribute(el, attribute) → {string}
获取元素的属性值。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 一个DOM元素。 |
属性 | string | 要获取值的属性。 |
属性的值。
- 类型:
- string
(静态) getAttributes(tag) → {Object}
获取HTML标签上定义的元素属性值。
特性与属性不同。它们在标签上定义或通过setAttribute定义。
名称 | 类型 | 描述 |
---|---|---|
标签 | 元素 | 要获取标签特性的元素。 |
元素的所有特性。布尔特性将为true
或false
,其他将为字符串。
- 类型:
- Object
(静态) getBoundingClientRect(el) → {Object|undefined}
与原生的getBoundingClientRect
函数相同,但确保该方法得到所有支持(在我们声称支持的所有浏览器中都支持)并且元素在DOM中才继续。
此包装函数还填充了某些旧浏览器(即IE8)未提供的属性。
此外,某些浏览器不支持向ClientRect
/DOMRect
对象添加属性;因此,我们使用标准属性(除了x
和y
,它们未被广泛支持)进行浅拷贝。这有助于避免键不可枚举的实现。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 我们要计算其 |
总是返回一个普通对象——如果不能则返回undefined
。
- 类型:
- 对象 |
undefined
(静态) getPointerPosition(el, event) → {module:dom~Coordinates}
获取元素内的指针位置。
坐标的基准是元素的左下角。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 要获取指针位置的元素。 |
event | Event | 事件对象。 |
与鼠标位置对应的坐标对象。
(静态) hasClass(element, classToCheck) → {boolean}
检查元素是否具有某个类名。
名称 | 类型 | 描述 |
---|---|---|
element | 元素 | 要检查的元素 |
classToCheck | string | 要检查的类名 |
如果
classToCheck
包含空格,则抛出错误。- 类型
- 错误
如果元素具有该类,则为true
,否则为false
。
- 类型:
- 布尔值
(静态) insertContent(el, content) → {Element}
规范化内容并将其插入元素;这与appendContent()
相同,只是它会先清空元素。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 要插入规范化内容的元素。 |
内容 | ContentDescriptor | 内容描述符值。 |
插入规范化内容后的元素。
- 类型:
- 元素
(静态) isEl(value) → {boolean}
通过鸭子类型(duck typing)确定值是否为DOM元素。
名称 | 类型 | 描述 |
---|---|---|
值 | * | 要检查的值。 |
如果该值为DOM元素,则为true
,否则为false
。
- 类型:
- 布尔值
(静态) isInFrame() → {boolean}
确定当前DOM是否嵌入在iframe中。
如果DOM嵌入在iframe中,则为true
,否则为false
。
- 类型:
- 布尔值
(静态) isReal() → {boolean}
当前DOM接口是否看起来真实(即非模拟)。
如果DOM看起来真实,则为true
,否则为false
。
- 类型:
- 布尔值
(静态) isSingleLeftClick(event) → {boolean}
检查事件是否为单击左键。
名称 | 类型 | 描述 |
---|---|---|
event | MouseEvent | 事件对象。 |
如果是单击左键,则为true
,否则为false
。
- 类型:
- 布尔值
(静态) isTextNode(value) → {boolean}
通过鸭子类型(duck typing)确定值是否为文本节点。
名称 | 类型 | 描述 |
---|---|---|
值 | * | 检查此值是否为文本节点。 |
如果该值为文本节点,则为true
,否则为false
。
- 类型:
- 布尔值
(静态) normalizeContent(content) → {Array}
规范化内容,以便最终插入DOM。
这允许多种内容定义方法,但有助于避免陷入简单写入innerHTML
的陷阱,这可能引起XSS问题。
元素的内容可以以多种类型和组合形式传入,其行为如下:
名称 | 类型 | 描述 |
---|---|---|
内容 | ContentDescriptor | 内容描述符值。 |
传入的所有内容,已规范化为元素或文本节点的数组。
- 类型:
- 数组
(静态) prependTo(child, parent)
将元素作为另一个元素的第一个子节点插入
名称 | 类型 | 描述 |
---|---|---|
子项 | 元素 | 要插入的元素 |
parent | 元素 | 要插入子元素的父元素 |
(静态) removeAttribute(el, attribute)
移除元素的特性。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 一个DOM元素。 |
属性 | string | 要移除的特性。 |
(静态) removeClass(element, …classesToRemove) → {Element}
从元素中移除类名。
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
element | 元素 | 要从中移除类名的元素。 | |
要移除的类 | string | <可重复> | 一个或多个要移除的类名。 |
移除类名后的DOM元素。
- 类型:
- 元素
(静态) setAttribute(el, attribute, value)
设置元素的特性值。
名称 | 类型 | 描述 |
---|---|---|
元素 | 元素 | 一个DOM元素。 |
属性 | string | 要设置的特性。 |
值 | string | 要将属性设置为的值。 |
(静态) setAttributes(el, attributes可选)
将特性应用于HTML元素。
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
元素 | 元素 | 要添加特性的元素。 | |
属性 | Object | <可选> | 要应用的特性。 |
(静态) textContent(el, text) → {Element}
将文本注入元素,完全替换任何现有内容。
名称 | 类型 | 描述 |
---|---|---|
元素 | HTMLElement | 要添加文本内容的元素 |
文本 | string | 要添加的文本内容。 |
添加文本内容后的元素。
- 类型:
- 元素
(静态) toggleClass(element, classToToggle, predicate可选) → {Element}
根据可选条件或类名的存在/缺失,向元素添加或从元素移除类名。
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
element | 元素 | 要切换类名的元素。 | |
classToToggle | string | 要切换的类。 | |
谓词 | boolean | | <可选> | 请参阅module:dom~PredicateCallback的返回值 |
已切换类名的元素。
- 类型:
- 元素
(静态) unblockTextSelection()
关闭文本选择阻止。
类型定义
ContentDescriptor()
这是一个混合值,描述通过某种方法注入DOM的内容。它可以是以下类型:
类型 | 描述 |
---|---|
string | 该值将被规范化为文本节点。 |
元素 | 该值将按原样接受。 |
Text | 一个TextNode。该值将按原样接受。 |
数组 | 一个由字符串、元素、文本节点或函数构成的一维数组。这些函数应返回一个字符串、元素或文本节点(任何其他返回值,如数组,将被忽略)。 |
Function | 一个函数,预期返回一个字符串、元素、文本节点或数组——即上述任何其他可能的值。这意味着内容描述符可以是一个返回函数数组的函数,但这些二级函数必须返回字符串、元素或文本节点。 |
Coordinates
表示DOM元素或鼠标指针的x和y坐标。
- Object
名称 | 类型 | 描述 |
---|---|---|
x | 数字 | 像素x坐标 |
y | 数字 | 像素y坐标 |
Position
表示DOM元素在页面上的位置。
- Object
名称 | 类型 | 描述 |
---|---|---|
left | 数字 | 左侧像素。 |
top | 数字 | 顶部像素。 |
PredicateCallback(element, classToToggle) → {boolean|undefined}
toggleClass的回调定义。
名称 | 类型 | 描述 |
---|---|---|
element | 元素 | 组件的DOM元素。 |
classToToggle | string | 要切换的 |
如果返回true
,classToToggle
将添加到element
中,但不移除。如果返回false
,classToToggle
将从element
中移除,但不添加。如果返回undefined
,则忽略回调。
- 类型:
- boolean |
undefined