recursal/MDN huggingface dataset:
VRDisplay.requestAnimationFrame()
=================================

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

The **`requestAnimationFrame()`** method of the `VRDisplay` interface is a special implementation of `Window.requestAnimationFrame` containing a callback function that will be called every time a new frame of the `VRDisplay` presentation is rendered:

* When the `VRDisplay` is not presenting a scene, this is functionally equivalent to `Window.requestAnimationFrame`.
* When the VRDisplay is presenting, the callback is called at the native refresh rate of the `VRDisplay`.
Syntax
------


```js
var handle = vrDisplayInstance.requestAnimationFrame(callback);
```

### Parameters

callback

A callback function that will be called every time a new frame of the `VRDisplay` presentation is rendered.

### Return value

A long representing the handle of the `requestAnimationFrame()` call. This can then be passed to a `VRDisplay.cancelAnimationFrame()` (en-US) call to unregister the callback.

Examples
--------
```

TBD.
```

Specifications
--------------

该 API 在旧的 WebVR API（已被 WebXR Device API 取代）中定义。它不再有望成为标准。

在所有浏览器都实现新的 WebXR API (en-US) 之前，建议使用框架（如：A-Frame、Babylon.js 或 Three.js）或 polyfill 来开发适用于所有浏览器的 WebXR 应用程序。[1]

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

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

See also
--------

* WebVR API
Clients.matchAll()
==================

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

`Clients` 接口的 **`matchAll()`** 方法返回 service worker `Client` 对象列表的 `Promise` . 包含 `options` 参数以返回域与关联的 service worker 的域相同所有 service worker 的 clients. 如果未包含 options，该方法仅返回由 service worker 控制的 service worker clients.

语法
--


```js
ServiceWorkerClients.matchAll(options).then(function (clients) {
  // do something with your clients list
});
```

### 参数

`options 可选`

一个 options 对象，允许你为匹配操作设置选项。可用选项包括：

* `includeUncontrolled`: `Boolean` (en-US) — 如果设置为`true`, 匹配操作将返回与当前服务工作者共享相同源的所有服务工作者客户端。否则，它仅返回由当前服务工作者控制的服务工作者客户端。默认值为`false`.
* `type`: 设置想要匹配的 clients 类型。可用值包括 `window`, `worker`, `sharedworker`, 和 `all`. 默认是 `all`.

### 返回值

resolve 为一个 `Client` 对象数组的 `Promise` . 在 Chrome 46/Firefox 54 以及更高版本中，该方法以最近关注的顺序返回 clients , 根据规范更正。

示例
--


```js
clients.matchAll(options).then(function (clientList) {
  for (var i = 0; i < clients.length; i++) {
    if (clientList[i].url === "index.html") {
      clients.openWindow(clientList[i]);
      // or do something else involving the matching client
    }
  }
});
```

规范
--

| Specification |
| --- |
| Service Workers # clients-matchall |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Clients.openWindow()
====================

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

`Clients`接口的 **`openWindow()`** 方法创建一个顶级的浏览器上下文并加载给定的 URL. 如果调用脚本没有显示弹出窗口的权限， **`openWindow()`** 将抛出 InvalidAccessError.

在 Firefox 中，只有在作为通知点击事件的结果调用时，才允许该方法显示弹出窗口。

在 Chrome for Android 中，该方法可以改为在先前添加到用户主屏幕的 standalone web app 提供的现有浏览上下文中打开 URL.

语法
--


```js
ServiceWorkerClients.openWindow(url).then(function (WindowClient) {
  // do something with your WindowClient
});
```

### 参数

`url`

一个 `USVString`，表示要在窗口中打开的 client 的 URL。通常，此值必须是与调用脚本有相同域的 URL.

### 返回值

如果 URL 来自与服务工作者相同的域，则 resolve 为 `WindowClient` (en-US) 对象的 Promise，否则 resolve 为 null value.

示例
--


```js
// When the user clicks a notification focus the window if it exists or open
// a new one otherwise.
onotificationclick = function (event) {
  var found = false;
  clients.matchAll().then(function (clientsArr) {
    for (i = 0; i < clientsArr.length; i++) {
      if (clientsArr[i].url === event.data.url) {
        // We already have a window to use, focus it.
        found = true;
        clientsArr[i].focus();
        break;
      }
    }
    if (!found) {
      // Create a new window.
      clients.openWindow(event.data.url).then(function (windowClient) {
        // do something with the windowClient.
      });
    }
  });
};
```

规范
--

| Specification |
| --- |
| Service Workers # clients-openwindow |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Clients.get()
=============

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

`Clients` 接口的 **`get()`** 方法 获取给定 `id` 匹配的 Service Worker client，并在 `Promise` 中返回它。

语法
--


```js
self.clients.get(id).then(function (client) {
  // do something with your returned client
});
```

### 参数

`id`

一个 `DOMString` ，表示你想要获取的 client id.

### 返回

一个 resolve 为 `Client` 对象的 `Promise`.

示例
--


```js
self.clients.get(options).then(function (client) {
  self.clients.openWindow(client.url);
});
```

规范
--

| Specification |
| --- |
| Service Workers # clients-get |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Clients.claim()
===============

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

`Clients` 接口的 **`claim()`** 方法允许一个激活的 service worker 将自己设置为其 `scope` (en-US) 内所有 clients 的`controller` . 这会在由此 service worker 控制的任何 clients 中触发 `navigator.serviceWorker` 上的 "`controllerchange`" 事件。

当一个 service worker 被初始注册时，页面在下次加载之前不会使用它。 `claim()` 方法会立即控制这些页面。请注意，这会导致 service worker 控制通过网络定期加载的页面，或者可能通过不同的 service worker 加载。

语法
--
```

await clients.claim();
```

### 参数

None.

### 返回

A `Promise` for `void`.

示例
--

The following example uses `claim()` inside service worker's "`activate`" event listener so that clients loaded in the same scope do not need to be reloaded before their fetches will go through this service worker.


```js
self.addEventListener("activate", (event) => {
  event.waitUntil(clients.claim());
});
```

规范
--

| Specification |
| --- |
| Service Workers # clients-claim |

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

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

See also
--------

* Using Service Workers (en-US)
* The service worker lifecycle
* Is ServiceWorker ready?
* `Promises`
* `self.skipWaiting()` - skip the service worker's waiting phase
ServiceWorkerGlobalScope.skipWaiting()
======================================

`ServiceWorkerGlobalScope` 的 **`ServiceWorkerGlobalScope.skipWaiting()`** 方法强制等待 service worker 成为激活的 service worker。

这个方法与 `Clients.claim()` 一起使用，以确保原 service worker 的更新，能立即对当前对客户端和其他所有激活的客户端生效。

语法
--


```js
skipWaiting()
```

### 参数

无。

### 返回值

一个 `Promise`，该 promise 会立即兑现为 `undefined`。

示例
--

虽然 `self.skipWaiting()` 可以在 service worker 执行期间的任何时间点调用，但是它只有在新安装的 service worker 可能保持在 `waiting` 状态的时候才会起作用。因此，通常从 `InstallEvent` 处理程序内部调用 `self.skipWaiting()`。

以下示例会导致新安装的 service worker 进入 `activating` 状态，而不会管是否已经有一个激活的 service worker。


```js
self.addEventListener("install", (event) => {
  // skipWaiting() 返回一个 promise，但完全可以忽略它
  self.skipWaiting();

  // 执行 service worker 安装所需
  // 的任何其他操作，
  // 可能需要在 event.waitUntil() 的内部进行
});
```

规范
--

| Specification |
| --- |
| Service Workers # service-worker-global-scope-skipwaiting |

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

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

参见
--

* 使用 Service Worker
* Service worker 基础代码示例
* 是否支持 ServiceWorker？
* `Clients.claim()`
* `Promise`
* 使用 web worker
DeviceMotionEvent.acceleration
==============================

acceleration 属性会返回设备的加速度记录（单位：m / s2）。

**备注：** 如果硬件无法从 acceleration 数据中移除重力加速度，则该值在`DeviceMotionEvent`中可能并不存在，你应当使用`DeviceMotionEvent.accelerationIncludingGravity`代替

语法
--
```

var acceleration = instanceOfDeviceMotionEvent.acceleration;
```

值
-

`acceleration`是一个包括三轴（x、y、z）加速度信息的对象，每个轴都有自己的属性：

`x`

表示 x 轴（西到东）上的加速度

`y`

表示 y 轴（南到北）上的加速度

`z`

表示 z 轴（下到上）上的加速度

说明
--

| Specification |
| --- |
| DeviceOrientation Event Specification # ref-for-dom-devicemotionevent-acceleration③ |

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

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

推荐浏览
----

* `DeviceMotionEvent.accelerationIncludingGravity`
* `devicemotion`
* `window.ondevicemotion`
* `deviceorientation`
* `DeviceOrientationEvent`
* Detecting device orientation (en-US)
* Orientation and motion data explained
DeviceMotionEvent.interval
==========================

返回从底层硬件获取数据的时间间隔（单位：毫秒）。你可以使用它来确定运动事件的粒度。

语法
--
```

var interval = instanceOfDeviceMotionEvent.interval;
```

说明
--

| Specification |
| --- |
| DeviceOrientation Event Specification # ref-for-dom-devicemotionevent-interval① |

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

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

推荐浏览
----

* `DeviceMotionEvent`
* `devicemotion`
* `window.ondevicemotion`
* `deviceorientation`
* `DeviceOrientationEvent`
* Detecting device orientation (en-US)
* Orientation and motion data explained
DeviceMotionEvent.DeviceMotionEvent()
=====================================

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

The **`DeviceMotionEvent`** constructor 会创建一个新的 `DeviceMotionEvent`.

语法
--
```

var deviceMotionEvent = new DeviceMotionEvent(type[, options])
```

### 参数

`type`

必须是 `"devicemotion"`.

`options`可选

可选项如下：

* `acceleration`: 一个对象，包含设备在 X，Y 和 Z 三个轴线上的加速度。加速度的单位为m/s2.
* `accelerationIncludingGravity`: 一个对象，包含设备在 X，Y 和 Z 三个轴线上，重力作用下的加速度。加速度的单位为m/s2.
* `rotationRate`: 一个对象，包含设备的定向在三个定向轴 alpha, beta 和 gamma 上的偏移比率。偏移比率的单位是每秒偏移的角度。
* `interval`: 时间间隔，单位毫秒，表示设备获取数据的间隔时间。

说明
--

无特别说明。

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

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

返回设备围绕其每个轴（x、y、z）旋转的速率（单位：度/秒）。

**备注：** 如果设备无法提供此信息，则为 null

语法
--
```

var rates = instanceOfDeviceMotionEvent.rotationRate;
```

值
-

rotationRates 属性是一个只读对象，用于描述设备围绕其每个轴的旋转速率：

`alpha`

设备绕其 Z 轴旋转的速率（即绕垂直于屏幕的线旋转）

`beta`

设备绕其 X 轴旋转的速率（即从前到后旋转）

`gamma`

设备绕其 Y 轴旋转的速率（即从一侧到另一侧）

说明
--

| Specification |
| --- |
| DeviceOrientation Event Specification # ref-for-dom-devicemotionevent-rotationrate② |

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

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

推荐阅读
----

* `DeviceMotionEvent`
* `devicemotion`
* `window.ondevicemotion`
* `deviceorientation`
* `DeviceOrientationEvent`
* Detecting device orientation (en-US)
* Orientation and motion data explained
DeviceMotionEvent.accelerationIncludingGravity
==============================================

accelerationIncludingGravity 属性返回设备的加速度的记录，单位为米每秒平方（m / s2）。与已移除重力加速度的`DeviceMotionEvent.acceleration`不同，此值是由用户引起的设备的加速度和由重力加速度的总和。

此值通常不如`DeviceMotionEvent.acceleration`实用，但是在部分不能自动从加速度数据中移除重力加速度的设备（例如没有陀螺仪的设备），是唯一可用值。

语法
--
```

var acceleration = instanceOfDeviceMotionEvent.accelerationIncludingGravity;
```

值
-

`accelerationIncludingGravity`是一个包括三轴（x、y、z）加速度信息的对象，每个轴都有自己的属性：

`x`

表示 x 轴（西到东）上的加速度

`y`

表示 y 轴（南到北）上的加速度

`z`

表示 z 轴（下到上）上的加速度

说明
--

| Specification |
| --- |
| DeviceOrientation Event Specification # ref-for-dom-devicemotionevent-accelerationincludinggravity④ |

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

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

推荐浏览
----

* `DeviceMotionEvent.acceleration`
* `devicemotion`
* `window.ondevicemotion`
* `deviceorientation`
* `DeviceOrientationEvent`
* Detecting device orientation (en-US)
* Orientation and motion data explained
UIEvent.detail
==============

**`UIEvent.detail`** 是只读属性，当值为非空的时候，提供当前点击数 (和环境有关) 。

对 `click` 或者 `dblclick` 事件，`UIEvent.detail` 是当前点击数量。

对 `mousedown` 或者 `mouseup` 事件，`UIEvent.detail` 是 1 加上当前点击数。

对所有的其他`UIEvent` 对象，`UIEvent.detail` 总是零。

Specifications
--------------

| Specification |
| --- |
| UI Events # dom-uievent-detail |

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

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

**`UIEvent()`** 作为构造函数，可用于构造一个新的 `UIEvent` 对象。

语法
--
```

event = new UIEvent(typeArg [, UIEventInit])
```

### Values

`typeArg`

传递的是一个 `DOMString`类型的字符串，用来命名且重新发布的事件。

`UIEventInit` 可选

是 `UIEventInit` 集合，它拥有以下属性：

* **`detail`**: 可选，默认为 long 类型的 0 数值，用来标记事件的关联值。`UIEvent.detail` 列出了标准事件的语义。
* **`view`**: 可选，默认为 null，类型为 `WindowProxy`, 用来关联`Window` 与 event 本身。
* **`sourceCapabilities`**: 
非标准
 一个 `InputDeviceCapabilities` (en-US) 类型的接口实例 (对象)，用来提供物理设备的触摸信息。

**备注：** `UIEventInit` 合集依然接受从`EventInit` 定义来的合集。

Specifications
--------------

| Specification |
| --- |
| UI Events # dom-uievent-uievent |

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

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

See also
--------

* `UIEvent`, the interface of the objects it constructs.
KeyboardEvent.which
===================

**已弃用:** 不再推荐使用该特性。虽然一些浏览器仍然支持它，但也许已从相关的 web 标准中移除，也许正准备移除或出于兼容性而保留。请尽量不要使用该特性，并更新现有的代码；参见本页面底部的兼容性表格以指导你作出决定。请注意，该特性随时可能无法正常工作。

`KeyboardEvent` 接口的 **`which`** 只读属性返回所按下键的数字 `keyCode` 或所按下字母数字键的字符代码 (`charCode`) 。

语法
--
```

var keyResult = event.which;
```

### 返回值

* `keyResult` contains the numeric code for a particular key pressed, depending on whether an alphanumeric or non-alphanumeric key was pressed. Please see `KeyboardEvent.charCode` and `KeyboardEvent.keyCode` for more details.
例子
--


```html
<html>
  <head>
    <title>charCode/keyCode/which example</title>

    <script type="text/javascript">
 function showKeyPress(evt) {
 alert(
 "onkeypress handler: \n" +
 "keyCode property: " +
 evt.keyCode +
 "\n" +
 "which property: " +
 evt.which +
 "\n" +
 "charCode property: " +
 evt.charCode +
 "\n" +
 "Character Key Pressed: " +
 String.fromCharCode(evt.charCode) +
 "\n",
 );
 }

 function keyDown(evt) {
 alert(
 "onkeydown handler: \n" +
 "keyCode property: " +
 evt.keyCode +
 "\n" +
 "which property: " +
 evt.which +
 "\n",
 );
 }
 </script>
  </head>

  <body onkeypress="showKeyPress(event);" onkeydown="keyDown(event);">
    <p>Please press any key.</p>
  </body>
</html>
```

规范
--

| Specification |
| --- |
| UI Events # dom-uievent-which |

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

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

See also
--------

* `KeyboardEvent`, the interface this property belongs too.
用户界面项目视图
========

The **`UIEvent.view`** 只读属性返回的生成事件的 `document.defaultView` (`window` of the document) 对象。在浏览器中，这是事件所在的 `Window` 对象。

语法
--
```

var view = event.view;
```


* `view` 是对 `AbstractView` 对象的引用。
技术参数
----

| Specification |
| --- |
| UI Events # dom-uievent-view |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
AudioListener：forwardY 属性
=========================

`AudioListener` 接口的 `forwardY` 只读属性是一个 `AudioParam`，表示定义监听者指向的前进方向的方向向量的 y 值。

**备注：** 当与 `PannerNode` (en-US) 一起使用时，如果 `panningModel` (en-US) 设置为 equalpower，则参数为 *a-rate*；否则为 *k-rate*。

值
-

一个 `AudioParam`。其默认值为 0，范围可在正负无穷之间。

示例
--

查看 BaseAudioContext.createPanner() (en-US) 以获取示例代码。

规范
--

| Specification |
| --- |
| Web Audio API # dom-audiolistener-forwardy |

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

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

参见
--

* 使用 Web Audio API
SpeechGrammar.src
=================

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

**`src`** 属性是 `SpeechGrammar` 接口设置并返回的一个字符串，包含了 `SpeechGrammar` 对象的文法。

语法
--
```

var myGrammar = speechGrammarInstance.src;
```

### 值

`DOMString` 用以表示文法。

示例
--


```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 # dom-speechgrammar-src |

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

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

相关链接
----

* Web Speech API
SpeechGrammar.weight
====================

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

`SpeechGrammar` 接口的可选属性 **`weight`** 设置并返回了一个 `SpeechGrammar` 对象的权重。

语法
--
```

var myGrammarWeight = speechGrammarInstance.weight;
```

### 值

浮点数表示了当前文法的权重，范围在 0.0-1.0 之间。

样例
--


```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 # dom-speechgrammar-weight |

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

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

相关链接
----

* Web Speech API
SpeechGrammar.SpeechGrammar()
=============================

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

**`SpeechGrammar`** 是 `SpeechGrammar` 接口的构造函数，创建一个新的 `SpeechGrammar` 对象实例。

语法
--
```

var mySpeechGrammar = new SpeechGrammar();
```

### Parameters

无。

样例
--


```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;

var newGrammar = new SpeechGrammar();
newGrammar.src =
  "#JSGF V1.0; grammar names; public <name> = chris | kirsty | mike;";
speechRecognitionList[1] = newGrammar; // 将 SpeechGrammar 对象添加到列表中
```

规格
--

此 API 没有官方的 W3C 或 WHATWG 规范。

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

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

相关链接
----

* Web Speech API
Element.hasAttributeNS()
========================

概述
--

`hasAttributeNS` 返回一个布尔值，指示该元素是否包含有指定的属性（attribute）。

语法
--
```

result =element.hasAttributeNS(namespace,localName)
```


* `result` 为返回的布尔值：`true` 或 `false`。
* `namespace` 是一个字符串，表示属性的命名空间。
* `localName` 是一个字符串，表示属性的名称。
例子
--
```

// 在为属性设置值之前检测该属性是否存在
var d = document.getElementById("div1");
if (d.hasAttributeNS(
        "http://www.mozilla.org/ns/specialspace/",
        "special-align")) {
   d.setAttribute("align", "center");
}
```

备注
--

该方法与`hasAttribute`类似，只是要检查的属性由命名空间和名称指定。只有使用命名空间的 XML 文档才使用方法

DOM methods dealing with element's attributes:

| Not namespace-aware, most commonly used methods | Namespace-aware variants (DOM Level 2) | DOM Level 1 methods for dealing with `Attr` nodes directly (seldom used) | DOM Level 2 namespace-aware methods for dealing with `Attr` nodes directly (seldom used) |
| --- | --- | --- | --- |
| `setAttribute` (DOM 1) | `setAttributeNS` | `setAttributeNode` | `setAttributeNodeNS` |
| `getAttribute` (DOM 1) | `getAttributeNS` (en-US) | `getAttributeNode` | `getAttributeNodeNS` |
| `hasAttribute` (DOM 2) | `hasAttributeNS` | - | - |
| `removeAttribute` (DOM 1) | `removeAttributeNS` | `removeAttributeNode` | - |

规范
--

DOM Level 2 Core: hasAttributeNS
GlobalEventHandlers.onpointerenter
==================================

HTML DOMpointerenter 事件的 GlobalEventHandlers（全局事件处理函数）


```js
var enterHandler = targetElement.onpointerenter;
```

### 返回值

`enterHandler`

`targetElement`的 pointerenter 事件处理函数。

示例
--

这个例子展示了使用 onpointerenter 来设置元素 pointerenter 事件处理函数的两种方式\*。\*


```js
<html>
<script>
function enterHandler(ev) {
 // 处理 pointerenter 事件
}
function init() {
 var el=document.getElementById("target1");
 el.onpointerenter = enterHandler;
}
</script>
<body onload="init();">
<div id="target1"> 点我 ... </div>
<div id="target2" onpointerenter="enterHandler(event)"> 点我 ... </div>
</body>
</html>
```

规范
--

| Specification |
| --- |
| Pointer Events # the-pointerenter-event |
| Pointer Events # dom-globaleventhandlers-onpointerenter |

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

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

参见
--

* 相关事件
    + `gotpointercapture`
    + `lostpointercapture`
    + `pointerover`
    + `pointerdown`
    + `pointermove`
    + `pointerup`
    + `pointercancel`
    + `pointerout`
    + `pointerleave`
Element.scrollTopMax
====================

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

**`Element.scrollTopMax`** 返回一个只读 Number 表示元素所能滚动的最大高度

语法
--
```

var pxl = elt.scrollTopMax;
```

规范
--

此属性不在当前规范中

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

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

See also
--------

* `Element.scrollLeftMax` giving the same information for the other axis.
Element.getElementsByClassName()
================================

**`Element.getElementsByClassName()`** 方法返回一个即时更新的（live）`HTMLCollection`，包含了所有拥有指定 class 的子元素。当在 document 对象上调用此方法时，会检索整个文档，包括根元素。

相似地，`getElementsByClassName()` 方法会在整个文档上执行；它返回指定拥有指定 class 名称的 document 根节点的后代元素。

语法
--
```

var elements = element.getElementsByClassName(names);
```


* **elements** 是一个即时更新的（live）`HTMLCollection`。
* **names** 是一个字符串，表示要匹配的类名（class names）列表；类名被空白符分隔。
* *element* 是文档中的任一 `Element`。
例子
--

获取所有包含 class 名称为 test 的元素：


```js
element.getElementsByClassName("test");
```


获取所有包含 `red` 和 `test` class 名的元素：


```js
element.getElementsByClassName("red test");
```


获取 `id` 为 `main` 的元素的所有包含一个 `test` class 名的后代元素：


```js
document.getElementById("main").getElementsByClassName("test");
```


可以在任何 `HTMLCollection` 上面使用 `Array.prototype` 的方法，要把 `HTMLCollection` 作为该方法的上下文对象（this）。下例，查找类名为 `test` 的元素中的所有 `<div>` 元素：


```js
var testElements = document.getElementsByClassName("test");
var testDivs = Array.prototype.filter.call(
  testElements,
  function (testElement) {
    return testElement.nodeName === "div";
  },
);
```

规范
--

| Specification |
| --- |
| DOM Standard # ref-for-dom-element-getelementsbyclassname |

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

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