recursal/MDN huggingface dataset:
CanvasCaptureMediaStream
========================

**实验性:** **这是一项实验性技术**  
在将其用于生产之前，请仔细检查浏览器兼容性表格。

**`CanvasCaptureMediaStream`** 接口表示 `MediaStream` 对 `HTMLCanvasElement` 元素进行实时画面捕捉的内容。

属性
--

*此接口继承了其父类 `MediaStream` 与 `EventTarget` 的属性。*

`CanvasCaptureMediaStream.canvas` (en-US) 只读 

可返回当前媒体流所对应的 `HTMLCanvasElement` 元素对象。

方法
--

*此接口继承了其父类 `MediaStream` 与 `EventTarget` 的方法。*

`CanvasCaptureMediaStream.requestFrame()` (en-US)

手动获取媒体流的一帧。可以捕捉部分渲染帧画面。

说明
--

| Specification |
| --- |
| Media Capture from DOM Elements # the-canvascapturemediastreamtrack |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

其他参考资料
------

* `HTMLCanvasElement.captureStream()`
WebGLVertexArrayObject
======================

\*\*`WebGLVertexArrayObject`\*\*接口是WebGL 2 API的一部分，顶点数组对象 (VAOs) 指向顶点数组数据，并提供不同顶点数据集合的名称。

当使用`WebGLVertexArrayObject`对象时，这些方法会很有用：

* `WebGL2RenderingContext.createVertexArray()`
* `WebGL2RenderingContext.deleteVertexArray()` (en-US)
* `WebGL2RenderingContext.isVertexArray()` (en-US)
* `WebGL2RenderingContext.bindVertexArray()` (en-US)

**备注：** **WebGL 1:** `OES_vertex_array_object` 扩展允许你在 WebGL 1 上下文环境中使用顶点数组对象。

示例
--


```js
var vao = gl.createVertexArray();
gl.bindVertexArray(vao);

// ...
// calls to bindBuffer or vertexAttribPointer
// which will be "recorded" in the VAO
// ...
```

规范
--

| Specification |
| --- |
| WebGL 2.0 Specification # 3.6 |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

相关链接
----

* `OES_vertex_array_object`
XMLHttpRequestEventTarget
=========================

`XMLHttpRequestEventTarget` 是一个描述事件处理程序的接口，你可以在一个用于处理 `XMLHttpRequest` 事件的对象中使用到该事件处理程序。

EventTarget

XMLHttpRequestEventTarget属性
--

`XMLHttpRequestEventTarget.onabort`

当请求失败时调用该方法，接受 `abort` 对象作为参数。

`XMLHttpRequestEventTarget.onerror`

当请求发生错误时调用该方法，接受 `error` 对象作为参数。

`XMLHttpRequestEventTarget.onload`

当一个 HTTP 请求正确加载出内容后返回时调用，接受 `load` 对象作为参数。

`XMLHttpRequestEventTarget.onloadstart`

当一个 HTTP 请求开始加载数据时调用，接受 `loadstart` 对象作为参数。

`XMLHttpRequestEventTarget.onprogress`

间歇调用该方法用来获取请求过程中的信息，接受 `progress` 对象作为参数。

`XMLHttpRequestEventTarget.ontimeout`

当超时时调用，接受 `timeout` 对象作为参数；只有设置了 `XMLHttpRequest` 对象的 `timeout` 属性时，才可能发生超时事件。

`XMLHttpRequestEventTarget.onloadend`

当内容加载完成，不管失败与否，都会调用该方法，接受 `loadend` 对象作为参数。

规范
--

| Specification |
| --- |
| XMLHttpRequest Standard # xmlhttprequesteventtarget |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* `XMLHttpRequest`
* 使用 XMLHttpRequest
Path2D
======

**实验性:** **这是一项实验性技术**  
在将其用于生产之前，请仔细检查浏览器兼容性表格。

Canvas 2D API 的接口 **`Path2D`** 用来声明路径，此路径稍后会被`CanvasRenderingContext2D` 对象使用。`CanvasRenderingContext2D` 接口的 路径方法 也存在于 Path2D 这个接口中，允许你在 canvas 中根据需要创建可以保留并重用的路径。

构造函数
----

`Path2D()`

`Path2D` 构造函数。创建一个新的 `Path2D` 对象。

方法
--

`Path2D.addPath()`

添加一条新路径到对当前路径。

`Path2D.closePath()`

使笔点返回到当前子路径的起始点。它尝试从当前点到起始点绘制一条直线。如果图形已经是封闭的或者只有一个点，那么此函数不会做任何操作。

`Path2D.moveTo()`

将一个新的子路径的起始点移动到 (x，y) 坐标。

`Path2D.lineTo()`

使用直线连接子路径的终点到 `x, y` 坐标。

`Path2D.bezierCurveTo()`

添加一条三次贝赛尔曲线到当前路径。该方法需要三个点。第一、第二个点是控制点，第三个点是结束点。起始点是当前路径的最后一个点，绘制贝赛尔曲线前，可以通过调用 `moveTo()` 进行修改。

`Path2D.quadraticCurveTo()`

添加一条二次贝赛尔曲线到当前路径。

`Path2D.arc()`

添加一条圆弧路径。圆弧路径的圆心在 *(x, y)* 位置，半径为 *r*，根据*anticlockwise* （默认为顺时针）指定的方向从 *startAngle* 开始绘制，到 *endAngle* 结束。

`Path2D.arcTo()`

根据控制点和半径添加一条圆弧路径，使用直线连接前一个点。

`Path2D.ellipse()`

添加一条椭圆路径。椭圆的圆心在（x,y）位置，半径分别是*radiusX* 和 *radiusY*，按照*anticlockwise* （默认顺时针）指定的方向，从 *startAngle* 开始绘制，到 *endAngle* 结束。

`Path2D.rect()`

创建一条矩形路径，矩形的起点位置是 *(x, y)*，尺寸为 *width* 和 *height*。

规范
--

| Specification |
| --- |
| HTML Standard # path2d-objects |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* `CanvasRenderingContext2D`
ByteLengthQueuingStrategy
=========================

Streams API 的 **`ByteLengthQueuingStrategy`** 接口提供了一个队列策略，该队列策略提供了内置的字节长度并且可以在构造流的时候使用。

构造函数
----

`ByteLengthQueuingStrategy()`

创建一个新的 `ByteLengthQueuingStrategy` 对象实例。

实例属性
----

`ByteLengthQueuingStrategy.highWaterMark` 只读 

在应用背压之前，内部队列可以包含的字节总数。

实例方法
----

`ByteLengthQueuingStrategy.size()`

返回给定分块的 `byteLength` 属性。

示例
--


```js
const queueingStrategy = new ByteLengthQueuingStrategy({ highWaterMark: 1 });

const readableStream = new ReadableStream(
  {
    start(controller) {
      // …
    },
    pull(controller) {
      // …
    },
    cancel(err) {
      console.log("stream error:", err);
    },
  },
  queueingStrategy,
);

const size = queueingStrategy.size(chunk);
```

规范
--

| Specification |
| --- |
| Streams Standard # blqs-class |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* Stream API
* 内置队列和队列策略
* `ByteLengthQueuingStrategy()` 构造函数
History API
===========

**History API** 通过 `history` 全局对象提供了对浏览器会话的历史记录（不要与 WebExtensions 的 history 混淆）的访问功能。它暴露了很多有用的方法和属性，使你可以在用户的历史记录中来回导航，而且可以操作历史记录栈中的内容。

**备注：** 该 API 仅在主线程（`Window`）中可用。无法在 `Worker` 或 `Worklet` (en-US) 上下文中访问它。

概念和用法
-----

使用 `back()`、`forward()` 和 `go()` 方法可以在用户历史记录中前后跳转。

### 向前和向后跳转

在历史记录中向后跳转：


```js
history.back();
```


这和用户点击浏览器的回退（`**Back**`）按钮的效果相同。

类似地，你可以向前跳转（如同用户点击了前进（`**Forward**`）按钮）：


```js
history.forward();
```

### 跳转到历史记录中的指定位置

你可以用 `go()` 方法从会话历史记录中加载某一特定页面，该页面使用与当前页面的相对位置来标识（当前页面的相对位置为 `0`）。

向后跳转一个页面（等价于调用 `back()`）：


```js
history.go(-1);
```


向前跳转一个页面，就像调用 `forward()`：


```js
history.go(1);
```


类似地，你可以传递参数值 `2` 并向前跳转 2 个页面，等等。

`go()` 方法的另一个用途是，在调用它时传递 `0` 或不传递任何参数以刷新当前页面：


```js
// 以下语句都具有刷新页面的效果
history.go(0);
history.go();
```


你可以通过查看 `length` 属性的值来确定历史记录栈中的页面数量：


```js
const numberOfEntries = history.length;
```

接口
--

`History`

允许操作浏览器*会话的历史记录*（即加载了当前页面的标签页或框架（frame）中访问过的页面）。

`PopStateEvent` (en-US)

`popstate` 事件的接口。

示例
--

以下示例为 `popstate` 事件分配了一个监听器。然后它演示了一些 history 对象的方法：对当前标签页浏览记录的添加、替换和跳转。


```js
window.addEventListener("popstate", (event) => {
  alert(`位置：${document.location}，状态：${JSON.stringify(event.state)}`);
});

history.pushState({ page: 1 }, "标题 1", "?page=1");
history.pushState({ page: 2 }, "标题 2", "?page=2");
history.replaceState({ page: 3 }, "标题 3", "?page=3");
history.back(); // 显示警告“位置：http://example.com/example.html?page=1，状态：{"page":1}”
history.back(); // 显示警告“位置：http://example.com/example.html，状态：null”
history.go(2); // 显示警告“位置：http://example.com/example.html?page=3，状态：{"page":3}”
```

规范
--

| Specification |
| --- |
| HTML Standard # the-history-interface |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* `history` 全局对象
* `popstate` 事件
GestureEvent
============

**非标准:** 该特性是非标准的，请尽量不要在生产环境中使用它！

**`GestureEvent`** 是 WebKit 的专有接口，提供多点触控的信息。这个接口的事件包括 `gesturestart` (en-US)、`gesturechange` (en-US) 和 `gestureend` (en-US).

`GestureEvent` 继承自 `UIEvent`，后者又继承自 `Event`。

构造函数
----

`GestureEvent()`

Creates a `GestureEvent` object.

属性
--

*This interface also inherits properties of its parents, `UIEvent` and `Event`.*

`GestureEvent.rotation` 只读 

Change in rotation (in degrees) since the event's beginning. Positive values indicate clockwise rotation; negative values indicate anticlockwise rotation. Initial value: `0.0`

`GestureEvent.scale` 只读 

Distance between two digits since the event's beginning. Expressed as a floating-point multiple of the initial distance between the digits at the beginning of the gesture. Values below 1.0 indicate an inward pinch (zoom out). Values above 1.0 indicate an outward unpinch (zoom in). Initial value: `1.0`

方法
--

*This interface also inherits methods of its parents, `UIEvent` and `Event`.*

`GestureEvent.initGestureEvent()`

Initializes the value of an `GestureEvent`. If the event has already being dispatched, this method does nothing.

手势事件类型
------

* `gesturestart` (en-US)
* `gesturechange` (en-US)
* `gestureend` (en-US)
规范
--

*不属于任何规范*。苹果在 Safari Developer Library 中描述了这个接口。

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* `MSGestureEvent`
* `MSGestureStart`
* `MSGestureEnd`
* `MSGestureTap`
* `MSGestureHold`
* `MSGestureChange`
* `MSInertiaStart`
FontFaceSet
===========

**实验性:** **这是一项实验性技术**  
在将其用于生产之前，请仔细检查浏览器兼容性表格。

CSS 字体加载 API 的 **`FontFaceSet`** 管理着字体们的加载和可查询的字体们下载状态。

Properties
----------

`FontFaceSet.status` (en-US) 只读 

表示 font-face's 的加载状态，可能是 `'loading'` 或 `'loaded'`

Events
------

`FontFaceSet.onloading` (en-US)

当 `loading` 相关事件发生时触发 `EventListener`，表示 font-face 集已经开始加载了。

`FontFaceSet.onloadingdone` (en-US)

当 `loading` 相关事件发生时触发 `EventListener`，表示 font-face 集已经完成加载了。

`FontFaceSet.onloadingerror` (en-US)

当 `loading` 相关事件发生时触发 `EventListener`，表示 font-face 集加载时产生了一个错误。

Methods
-------

`FontFaceSet.add()` (en-US)

向字体集添加一个字体。

`FontFaceSet.check()`

一个`Boolean` (en-US) 用于表示一个字体是否加载完成，但它不回初始化你的加载。

`FontFaceSet.clear()` (en-US)

移除字体集的所有字体。

`FontFaceSet.delete()` (en-US)

从字体集中移除一个字体。

`FontFaceSet.load()` (en-US)

返回解析为请求的字体的列表的 `Promise`。

`FontFaceSet.ready()` (en-US)

准备操作已完成且开始解析字体时返回一个 `Promise` 。

规范
--

| Specification |
| --- |
| CSS Font Loading Module Level 3 # FontFaceSet-interface |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Bluetooth
=========

**非标准:** 该特性是非标准的，请尽量不要在生产环境中使用它！

Web Bluetooth API (en-US) 的\*\*`Bluetooth`\*\*`接口`返回指代`BluetoothDevice` (en-US)带有指定选项的对象的`Promise`。

接口
--
```

interface Bluetooth {
  Promise<BluetoothDevice> requestDevice(RequestDeviceOptions options);
};
Bluetooth implements EventTarget;
Bluetooth implements BluetoothDeviceEventHandlers;
Bluetooth implements CharacteristicEventHandlers;
Bluetooth implements ServiceEventHandlers;
```

特性
--

无

方法
--

`Bluetooth.requestDevice()`

返回一个包含指定选项的`BluetoothDevice` (en-US)对象的`Promise`。

详细说明
----

| Specification |
| --- |
| Web Bluetooth # bluetooth |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Animation
=========

Baseline 2022
-------------

Newly availableSince September 2022, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

* Learn more
* See full compatibility
* Report feedback
**实验性:** **这是一项实验性技术**  
在将其用于生产之前，请仔细检查浏览器兼容性表格。

Web 动画 API的**动画**接口表示一个单个动画播放器并且提供用于一个动画节点或源的回放控制和一个时间轴。

构造函数
----

`Animation()`

创建一个新的 Animation 对象实例。

属性
--

`Animation.currentTime`

动画的当前时间值（以毫秒为单位），无论是正在运行还是已暂停。如果动画缺少`timeline`或尚未播放，其值为 null。

`Animation.effect`

获取或设置与此动画相关联的`KeyframeEffect` (en-US)。

`Animation.finished` 只读 

返回此动画的当前完成的状态。

`Animation.id`

获取或设置用于标识动画的字符串。

`Animation.playState` 只读 

返回描述动画播放状态的枚举值。

`Animation.playbackRate` (en-US)

返回或设置动画的播放速率。

`Animation.ready` (en-US) 只读 

返回此动画的当前就绪状态。

`Animation.startTime` (en-US)

获取或设置动画播放应开始的预定时间。

`Animation.timeline` (en-US)

获取或设置与此动画相关联的`timeline`。

### 事件处理程序

`Animation.oncancel`

获取并设置取消事件的事件处理程序。

`Animation.onfinish` (en-US)

获取并设置完成事件的事件处理程序。

方法
--

`Animation.cancel()`

清除此动画的所有`keyframeEffects` (en-US)，并中止播放。

`Animation.finish()` (en-US)

设置动画中止播放。

`Animation.pause()` (en-US)

暂停播放动画。.

`Animation.play()`

开始或恢复播放动画，或者如果之前完成，则重新开始动画。

`Animation.reverse()` (en-US)

反转播放动画，直到播放到动画开始时停止。如果动画完成或未播放，它将从头到尾播放。

规范
--

| Specification |
| --- |
| Web Animations # the-animation-interface |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
SVGAnimateElement
=================

**`SVGAnimateElement`** 接口对应于 `<animate>` 元素。

属性
--

*该接口没有属性，但从其父级继承属性，*

*`SVGAnimationElement` (en-US).*

方法
--

*该接口没有方法，但从其父级继承方法，*

*`SVGAnimationElement` (en-US).*

规范
--

| Specification |
| --- |
| SVG Animations Level 2 # InterfaceSVGAnimateElement |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
AudioScheduledSourceNode
========================

`AudioScheduledSourceNode` 接口作为 web 音频 API 的一部分，是几种具有在特定时刻开始与停止能力的音频源节点接口的父接口。更具体地来说，这个接口定义了`start()` (en-US) 和`stop()` 方法，以及`onended` (en-US)事件

**备注：** 你不能直接创建`AudioScheduledSourceNode`。而是应该使用继承于它的子接口，如`AudioBufferSourceNode`, `OscillatorNode`和`ConstantSourceNode` (en-US).

除非另有说明，基于`AudioScheduledSourceNode`节点的输出在没有播放时处于静默状态（这种状态在 start() 之前与 stop() 之后调用）。静默状态总是由一个全 0 值流组成。

Properties
----------

*Inherits properties from its parent interface, `AudioNode`, and adds the following properties:*

### Event handlers

`onended` (en-US)

A function to be called when the `ended` event is fired, indicating that the node has finished playing.

Methods
-------

*Inherits methods from its parent interface, `AudioNode`, and adds the following methods:*

`start()` (en-US)

Schedules the node to begin playing the constant sound at the specified time. If no time is specified, the node begins playing immediately.

`stop()`

Schedules the node to stop playing at the specified time. If no time is specified, the node stops playing at once.

Specification
-------------

| Specification |
| --- |
| Web Audio API # AudioScheduledSourceNode |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* Using the Web Audio API
* `AudioNode`
SpeechGrammar
=============

**实验性:** **这是一项实验性技术**  
在将其用于生产之前，请仔细检查浏览器兼容性表格。

Web Speech API 的 **`SpeechGrammar`** 接口 表示了语音识别对象服务想要识别的一系列词语或模式。

文法通过 JSpeech Grammar Format (**JSGF**.) 来定义，其他格式的文法会在以后支持。

构造函数
----

`SpeechGrammar.SpeechGrammar()`

创建一个新的 `SpeechGrammar` 对象。

属性
--

`SpeechGrammar.src`

设置或返回 `SpeechGrammar` 对象实例中包含文法的字符串。

`SpeechGrammar.weight` 可选

设置或返回 `SpeechGrammar` 对象的权重。

示例
--


```js
var grammar =
  "#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghostwhite | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;";
var recognition = new SpeechRecognition();
var speechRecognitionList = new SpeechGrammarList();
speechRecognitionList.addFromString(grammar, 1);
recognition.grammars = speechRecognitionList;

console.log(speechRecognitionList[0].src); // 应该返回和上面语法变量一样的内容
console.log(speechRecognitionList[0].weight); // 应该返回 1 - 与上面第四行所设置的权重一致
```

规范
--

| Specification |
| --- |
| Web Speech API # speechreco-speechgrammar |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

相关链接
----

* Web Speech API
Plugin
======

**警告：** **已废弃**
 该特性已经从 HTML5.2 标准中删除，虽然一些浏览器目前仍然支持它，但也许会在未来的某个时间停止支持，请尽量不要使用该特性。


插件接口提供有关浏览器插件的信息。

**备注：** 在最新版本的浏览器中插件对象本身的属性不可枚举。

属性
--

| 名称 | 描述 | 返回值类型 | 兼容性 |
| --- | --- | --- | --- |
| `Plugin.description` | 一个人类可读的插件描述。 **只读。** | `DOMString` | DOM 0 |
| `Plugin.filename` | 插件文件名。**只读。** | `DOMString` | DOM 0 |
| `Plugin.name` | 插件名。**只读。** | `DOMString` | DOM 0 |
| `Plugin.version` | 插件版本号字符串。**只读。** | `DOMString` | Gecko browsers only (Firefox 4+) |

方法
--

`Plugin.item`

返回支持的 MIME 类型的索引号。

`Plugin.namedItem`

返回支持的 MIME 类型。

规范
--

| Specification |
| --- |
| HTML Standard # dom-plugin |
TransformStreamDefaultController
================================

Stream API 的 **`TransformStreamDefaultController`** 接口提供了操作关联的 `ReadableStream` 和 `WritableStream` 的方法。

当构造 `TransformStream` 时，会创建一个 `TransformStreamDefaultController`。因此它没有构造函数。获取 `TransformStreamDefaultController` 实例的方式是通过 `TransformStream()` 的回调方法。

实例属性
----

`TransformStreamDefaultController.desiredSize`只读 

返回填充满流内部队列的可读端所需要的大小。

实例方法
----

`TransformStreamDefaultController.enqueue()`

排入一个分块（单个数据）到流的可读端。

`TransformStreamDefaultController.error()`

转换流的可写端和可读端都出现错误。

`TransformStreamDefaultController.terminate()`

关闭流的可读端并且流的可写端出错。

示例
--

在下面的示例中，一个转换流接收所有的分块将其转换为 `Uint8Array`，使用了 `error()` 和 `enqueue()` 方法。


```js
const transformContent = {
  start() {}, // required.
  async transform(chunk, controller) {
    chunk = await chunk;
    switch (typeof chunk) {
      case "object":
        // just say the stream is done I guess
        if (chunk === null) controller.terminate();
        else if (ArrayBuffer.isView(chunk))
          controller.enqueue(
            new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength),
          );
        else if (
          Array.isArray(chunk) &&
          chunk.every((value) => typeof value === "number")
        )
          controller.enqueue(new Uint8Array(chunk));
        else if (
          "function" === typeof chunk.valueOf &&
          chunk.valueOf() !== chunk
        )
          this.transform(chunk.valueOf(), controller); // hack
        else if ("toJSON" in chunk)
          this.transform(JSON.stringify(chunk), controller);
        break;
      case "symbol":
        controller.error("Cannot send a symbol as a chunk part");
        break;
      case "undefined":
        controller.error("Cannot send undefined as a chunk part");
        break;
      default:
        controller.enqueue(this.textencoder.encode(String(chunk)));
        break;
    }
  },
  flush() {
    /\* do any destructor work here \*/
  },
};

class AnyToU8Stream extends TransformStream {
  constructor() {
    super({ ...transformContent, textencoder: new TextEncoder() });
  }
}
```

规范
--

| Specification |
| --- |
| Streams Standard # ts-default-controller-class |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
CompositionEvent
================

DOM 接口 **`CompositionEvent`** 表示用户间接输入文本（如使用输入法）时发生的事件。此接口的常用事件有`compositionstart`, `compositionupdate` 和 `compositionend`

Event

UIEvent

CompositionEvent构造函数
----

`CompositionEvent()` (en-US)

创建一个新的 `CompositionEvent` 对象实例。

属性
--

*这个接口也从`UIEvent` 和 `Event` 继承属性。*

`CompositionEvent.data` (en-US) 只读 

返回触发事件的输入方法所产生的字符；取决于生成 `CompositionEvent` 对象的事件类型，结果会有所不同。

`CompositionEvent.locale` (en-US) 只读  
已弃用

返回当前输入方法的场景（例如，使用输入法编辑器进行输入合成时，场景就是键盘布局）。

方法
--

*这个接口也从 `UIEvent` 和 `Event` 继承方法。*

`CompositionEvent.initCompositionEvent()` (en-US) 
已弃用

初始化 `CompositionEvent` 对象的所有属性。

规范
--

| Specification |
| --- |
| UI Events # interface-compositionevent |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* compositionstart
* compositionend
* compositionupdate
* UIEvent (en-US)
* Event
ValidityState
=============

Baseline 2023
-------------

Newly availableSince March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

* Learn more
* See full compatibility
* Report feedback
DOM 接口 `ValidityState` 代表一个元素可有的有效性状态（*validity states*），其与约束验证（constraint validation）相关。这些状态一起解释了当元素值无效时，它的值为什么不能通过验证。

属性
--

对于以下每一个布尔值属性来说，值为 `true` 表示这就是验证失败的特定原因之一；**valid** 属性是例外，它为 `true` 表示元素值满足所有的约束条件。

`badInput` (en-US) 只读 

一个 `Boolean`，`true` 表示用户提供了浏览器不能转换的输入。

customError 只读 

一个 `Boolean`，表示这个元素的自定义验证信息是否已通过调用元素的 `setCustomValidity()` (en-US) 方法设置为一个非空字符串。

`patternMismatch` (en-US) 只读 

一个 `Boolean`，`true` 表示元素值不匹配规定的`pattern`，`false` 则表示匹配。`true` 的时候元素可用 CSS 伪类 `:invalid` 匹配。

`rangeOverflow` (en-US) 只读 

一个 `Boolean`，`true` 表示值已超过 `max` 属性规定的最大值，`false` 则表示小于或等于这个最大值。`true` 的时候元素可用 CSS 伪类 `:invalid` 和 `:out-of-range` 匹配。

`rangeUnderflow` (en-US) 只读 

一个 `Boolean`，`true` 表示值小于 `min` 属性规定的最小值，`false` 则表示大于或等于这个最小值。`true` 的时候元素可用 CSS 伪类 `:invalid` 和 `:out-of-range` 匹配。

`stepMismatch` (en-US) 只读 

一个 `Boolean`，`true` 表示值不符合由 `step` 属性规定的规则（即该值不能被步长值除尽，译注：假设最小值是 0）。`false` 表示其符合步长值规则。`true` 的时候元素可用 CSS 伪类 `:invalid` 和 `:out-of-range` 匹配。

`tooLong` (en-US) 只读 

一个 `Boolean`，`true` 表示值超过了`HTMLInputElement` 或 `HTMLTextAreaElement` 对象中规定的 `maxlength`， `false` 表示值的长度小于或等于最大长度。**注意**：这个属性在 Gecko 中永远不会是 `true`，因为元素值不允许比 `maxlength` 长。`true` 的时候元素可用 CSS 伪类 `:invalid` 和 `:out-of-range` 匹配。

`tooShort` (en-US) 只读 

一个 `Boolean`，`true` 表示值的长度小于 `HTMLInputElement` 或 `HTMLTextAreaElement` 对象中规定的 `minlength`， `false` 表示值的长度大于或等于最大长度。`true` 的时候元素可用 CSS 伪类 `:invalid` 和 `:out-of-range` 匹配。

`typeMismatch` (en-US) 只读 

一个 `Boolean`，`true` 表示元素值不满足所需的格式（可见于 `type` 是 `email` 或 `url` 时），`false` 表示格式正确。`true` 的时候元素可用 CSS 伪类 `:invalid` 匹配。

valid 只读 

一个 `Boolean`，`true` 表示元素满足所有的验证约束，因此被认为时有效的，`false` 表示有任一约束不满足。`true` 的时候元素可用 CSS 伪类 `:valid` 匹配，否则可用 CSS 伪类 `:invalid` 匹配。

`valueMissing` (en-US) 只读 

一个 `Boolean`， `true` 表示元素拥有 `required` 属性，但没有值，否则为 `false`。`true` 的时候元素可用 CSS 伪类 `:invalid` 匹配。

规范
--

| Specification |
| --- |
| HTML Standard # the-constraint-validation-api:validitystate-3 |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* 约束验证
* 表单数据校验
WindowTimers.clearInterval()
============================

`WindowOrWorkerGlobalScope` mixin 的 **`clearInterval()`** 方法可取消先前通过 `setInterval()` 设置的重复定时任务。

语法
--
```

scope.clearInterval(intervalID)
```

### Parameters

`intervalID`

要取消的定时器的 ID。是由 `setInterval()` 返回的。

值得一提的是，`setInterval()` 和 `setTimeout()` 共用其定义的 IDs，即可以使用 `clearInterval()` 和 `clearTimeout()` 中的任意一个。然而，为了使代码可读性更强，你应该尽量避免这种用法。

### 返回值

`undefined`示例
--

查看 `setInterval()` 的示例。

规范
--

| Specification |
| --- |
| HTML Standard # dom-clearinterval-dev |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* JavaScript 定时器
* `setTimeout`
* `setInterval`
* `clearTimeout`
* `Window.requestAnimationFrame`
* *Daemons* management
RTCSessionDescription
=====================

**实验性:** **这是一项实验性技术**  
在将其用于生产之前，请仔细检查浏览器兼容性表格。

**`RTCSessionDescription`** 接口描述连接或潜在连接的一端的配置方式。每一个`RTCSessionDescription` 由一个描述类型组成，该描述类型指示它所描述的请求/应答协商过程的SDP 协议的相关描述。

`RTCSessionDescription` 在两个对等点之间协商连接的过程涉及来回交换对象，每个描述都表示描述的发送者支持的连接配置选项的一个组合。一旦两个对等方就连接的配置达成一致，协商就完成了。

属性
--

*`RTCSessionDescription` 接口不继承任何属性*

`RTCSessionDescription.type` (en-US) 只读 

`RTCSdpType` 会话描述类型的原型枚举。

`RTCSessionDescription.sdp` (en-US) 只读 

一个 `DOMString` 包含会话的SDP协议描述。

常数
--

### RTCSdpType

当前枚举值定义当前会话描述的状态，例如这个属性： `type` (en-US) 。会话描述的值将使用如下值之一。

| Value | Description |
| --- | --- |
| `answer` | SDP 协议请求内容包含在属性`sdp` (en-US)中。换言之，此会话描述描述了商定的配置，并将被发送以完成协商。. |
| `offer` | 该会话描述对象描述首次握手的请求/响应。会话过程从发送方到接收方。 |
| `pranswer` | 会话描述对象描述一个临时响应；也就是说，它是对以前的提议或临时答案的响应。 |
| `rollback` | 具有空会话描述的这种特殊类型用于回滚到以前的稳定状态。 |

方法
--

*`RTCSessionDescription` 不继承任何方法。*

`RTCSessionDescription()` (en-US) 
已弃用

该构造函数返回一个新的 `RTCSessionDescription` 对象。参数是 `RTCSessionDescriptionInit` 字典包含包含分配这两个属性的值。

`RTCSessionDescription.toJSON()` (en-US)

返回一个JSON 描述对象。该对象包含两个值，`type` (en-US) 和`sdp` (en-US)。

示例
--


```js
signalingChannel.onmessage = function (evt) {
  if (!pc) start(false);

  var message = JSON.parse(evt.data);
  if (message.sdp)
    pc.setRemoteDescription(
      new RTCSessionDescription(message),
      function () {
        // if we received an offer, we need to answer
        if (pc.remoteDescription.type == "offer")
          pc.createAnswer(localDescCreated, logError);
      },
      logError,
    );
  else
    pc.addIceCandidate(
      new RTCIceCandidate(message.candidate),
      function () {},
      logError,
    );
};
```

规范
--

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # rtcsessiondescription-class |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

参见
--

* WebRTC
* `RTCPeerConnection.setLocalDescription()` (en-US) 和 `RTCPeerConnection.setRemoteDescription()`