recursal/MDN huggingface dataset:
PerformanceTiming: domInteractive property
==========================================

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

**Warning:** This interface of this property is deprecated in the Navigation Timing Level 2 specification. Please use the `PerformanceNavigationTiming`
 interface instead.


 The legacy
 **`PerformanceTiming.domInteractive`**
 read-only property returns an `unsigned long long` representing the moment,
 in milliseconds since the UNIX epoch, when the parser finished its work on the main
 document, that is when its `Document.readyState` changes to
 `'interactive'` and the corresponding `readystatechange` event is
 thrown.

 This property can be used to measure the speed of loading websites that users
 *feels*. Nevertheless there are a few caveats that happens if scripts are
 blocking rendering and not loaded asynchronously or with custom Web fonts. Check if you are in one of these cases before using this property as a proxy for the
 user experience of a website's speed of loading.

Value
-----

An `unsigned long long`.

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

 This feature is no longer on track to become a standard, as the Navigation Timing specification has marked it as deprecated.
 Use the `PerformanceNavigationTiming` interface instead.

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

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

See also
--------

* The `PerformanceTiming` interface it belongs to.
* The article "domInteractive: is it? really?" explaining when you can use this property as a proxy for the
 user experience of loading a website.
PerformanceTiming: responseStart property
=========================================

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

**Warning:** This interface of this property is deprecated in the Navigation Timing Level 2 specification. Please use the `PerformanceNavigationTiming`
 interface instead.


 The legacy
 **`PerformanceTiming.responseStart`**
 read-only property returns an `unsigned long long` representing the moment in
 time (in milliseconds since the UNIX epoch) when the browser received the first byte of
 the response from the server, cache, or local resource.

Value
-----

An `unsigned long long`.

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

 This feature is no longer on track to become a standard, as the Navigation Timing specification has marked it as deprecated.
 Use the `PerformanceNavigationTiming` interface instead.

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

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

See also
--------

* The `PerformanceTiming` interface it belongs to.
PerformanceTiming: loadEventEnd property
========================================

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

**Warning:** This interface of this property is deprecated in the Navigation Timing Level 2 specification. Please use the `PerformanceNavigationTiming`
 interface's `PerformanceNavigationTiming.loadEventEnd` read-only property instead.


 The legacy
 **`PerformanceTiming.loadEventEnd`**
 read-only property returns an `unsigned long long` representing the moment,
 in milliseconds since the UNIX epoch, when the `load` event handler
 terminated, that is when the load event is completed. If this event has not yet been
 sent, or is not yet completed, it returns `0.`

Value
-----

An `unsigned long long`.

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

 This feature is no longer on track to become a standard, as the Navigation Timing specification has marked it as deprecated.
 Use the `PerformanceNavigationTiming` interface instead.

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

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

See also
--------

* The `PerformanceTiming` interface it belongs to.
PerformanceTiming: domainLookupEnd property
===========================================

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

**Warning:** This interface of this property is deprecated in the Navigation Timing Level 2 specification. Please use the `PerformanceNavigationTiming`
 interface instead.


 The legacy
 **`PerformanceTiming.domainLookupEnd`**
 read-only property returns an `unsigned long long` representing the moment,
 in milliseconds since the UNIX epoch, where the domain lookup is finished. If a
 persistent connection is used, or the information is stored in a cache or a local
 resource, the value will be the same as `PerformanceTiming.fetchStart`.

Value
-----

An `unsigned long long`.

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

 This feature is no longer on track to become a standard, as the Navigation Timing specification has marked it as deprecated.
 Use the `PerformanceNavigationTiming` interface instead.

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

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

See also
--------

* The `PerformanceTiming` interface it belongs to.
PerformanceTiming: fetchStart property
======================================

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

**Warning:** This interface of this property is deprecated in the Navigation Timing Level 2 specification. Please use the `PerformanceNavigationTiming`
 interface instead.


 The legacy
 **`PerformanceTiming.fetchStart`**
 read-only property returns an `unsigned long long` representing the moment,
 in milliseconds since the UNIX epoch, the browser is ready to fetch the document using
 an HTTP request. This moment is *before* the check to any application cache.

Value
-----

An `unsigned long long`.

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

 This feature is no longer on track to become a standard, as the Navigation Timing specification has marked it as deprecated.
 Use the `PerformanceNavigationTiming` interface instead.

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

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

See also
--------

* The `PerformanceTiming` interface it belongs
 to.**`PerformanceTiming.fetchStart`**
XRInputSourceArray: forEach() method
====================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The `XRInputSourceArray`
 method **`forEach()`** executes the specified callback once for
 each input source in the array, starting at index 0 and progressing until the end of the
 list.

Syntax
------


```js
forEach(callback)
forEach(callback, thisArg)
```

### Parameters

`callback`

 A function to execute once for each entry in the
 array `xrInputSourceArray`. The callback accepts up to three parameters:


`currentValue`

 A `XRInputSource` object which is the value of the item from within
 the `xrInputSourceArray` which is currently being processed.


`currentIndex` Optional

 An integer value providing the index into the array at which the element given
 by `currentValue` is located. If you don't need to know the index
 number, you can omit this.


`sourceList` Optional

 The `XRInputSourceArray` object which is being processed. If you
 don't need this information, you may omit this.



`thisArg` Optional

 The value to be used for
 `this`
 while executing the callback. Note that if you use arrow function notation (`=>`) to provide the callback, you can
 omit `thisArg`, since all arrow functions lexically bind `this`.


### Return value

Undefined.

Examples
--------

 This example snippet gets the list of inputs for a session and tries to handle each
 type of input device it supports using.


```js
let inputSources = xrSession.inputSources;

inputSources.forEach((input) => {
  if (input.gamepad) {
    checkGamepad(input.gamepad);
  } else if (
    input.targetRayMode === "tracked-pointer" &&
    input.handedness === player.handedness
  ) {
    /\* Handle main hand controller \*/
    handleMainHandInput(input);
  } else {
    /\* Handle other inputs \*/
  }
});
```


 For each input in the list, the callback dispatches gamepad inputs to
 a `checkGamepad()` with the input's `Gamepad` object, taken from
 its `gamepad` property, as an input

 For other devices, we look for `tracked-pointer` devices in the player's
 main hand, dispatching those to a `handleMainHandInput()` method.

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

#### No specification found

No specification data found for `api.XRInputSourceArray.forEach`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

See also
--------

* Inputs and input sources
* The
 `Array` method `forEach()`
* `XRInputSource`
XRInputSourceArray: length property
===================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The read-only **`length`** property returns an integer value
 indicating the number of items in the input source list represented by
 the `XRInputSourceArray` object.

Value
-----

 An integer value indicating the number of `XRInputSource` objects
 representing WebXR input sources are included in the array.

Examples
--------

 In this example, a game that requires at least one input source
 uses `length` to check this before proceeding to allow the user to play the
 game.


```js
let sources = xrSession.inputSources;

if (sources.length === 0) {
  showAlertDialog(
    "You need to have at least one controller to play Super Duper Shark Jump Fest 9000.",
    [
      { label: "Shop Now", url: "https://www.example.com/shop/controllers" },
      { label: "Quit", handler: quitGame },
    ],
  );
}
```


 Here, if `length` is 0, a
 hypothetical `showAlertDialog()` function is called with a prompt string
 explaining the need for a controller, and an array of objects, each describing a button
 and what should happen when it's clicked. The first takes the user to an Amazon.com
 search for VR controllers, and the second calls a `quitGame()` function to
 start shutting the game program down.

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

| Specification |
| --- |
| WebXR Device API # dom-xrinputsourcearray-length |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
XRInputSourceArray: values() method
===================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The `XRInputSourceArray`
 method **`values()`** returns a JavaScript
`iterator`
 that can walk over the list of `XRInputSource` objects contained in the
 array, from first to last.

Syntax
------


```js
values()
```

### Parameters

None.

### Return value

 A
 JavaScript `iterator` that
 can be used to walk through the list of `XRInputSource` objects in the
 array, starting with the first entry (at index 0) and proceeding straight through the
 list.

Examples
--------

 This example snippet walks through each input and calls the
 function `checkInput()` with each returned value.


```js
for (const source of xrSession.inputSources.values()) {
  checkInput(source);
}
```


 Here,
 `for...of`
 is used to iterate over the array's contents. Each pass through the loop,
 `source` is the next `XRInputSource` in the list. The loop exits
 once every input has been delivered to `checkInput()`.

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

#### No specification found

No specification data found for `api.XRInputSourceArray.values`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

See also
--------

* Inputs and input sources
* The `XRInputSourceArray` method `keys()`
* The
 `Array` method `values()`
* `XRInputSource`
XRInputSourceArray: keys() method
=================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The **`keys()`** method in the
 `XRInputSourceArray` interface returns a JavaScript
`iterator`
 which can then be used to iterate over the keys used to reference each item in the array
 of input sources.

Syntax
------


```js
keys()
```

### Parameters

None.

### Return value

 A
 JavaScript `iterator` that
 can be used to walk through the keys for each entry in the list of input sources. The
 values returned by the iterator are the indexes of each entry in the list; that is, the
 numbers 0, 1, 2, and so forth through the index of the last item in the list.

Examples
--------

 This example snippet gets the list of inputs for a session and tries to handle each
 type of input device it supports using.


```js
for (const inputIdx of xrSession.inputSources.keys()) {
  /\* the keys are the indexes into the list of inputs \*/
  checkInput(xrSession.inputSources[inputIdx]);
}
```


 Here,
 `for...of`
 is used to iterate over each of the keys. For each key, the input is retrieved using the
 index with array notation: `xrSession.inputSources[inputIdx]`.

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

#### No specification found

No specification data found for `api.XRInputSourceArray.keys`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

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

See also
--------

* Inputs and input sources
* The `XRInputSourceArray` method `values()`
* The
 `Array` method `keys()`
* `XRInputSource`
XRInputSourceArray: entries() method
====================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The `XRInputSourceArray` interface's
 **`entries()`** method returns a JavaScript
 `iterator`
 which can then be used to iterate over the key/value pairs in the input source
 array. Each item in the array is an `XRInputSource` object.

 Most frequently, you will use this in tandem with statements such as
 `for...of`.

Syntax
------


```js
entries()
```

### Parameters

None.

### Return value

 An `iterator`
 which can be used to walk through the list of `XRInputSource` objects
 included in the input source array.

Examples
--------

 This example snippet gets the list of inputs for a session and tries to handle each
 type of input device it supports using.


```js
let sources = xrSession.inputSources;

for (const input of sources.entries()) {
  if (input.gamepad) {
    checkGamepad(input.gamepad);
  } else if (
    input.targetRayMode === "tracked-pointer" &&
    input.handedness === player.handedness
  ) {
    /\* Handle main hand controller \*/
    handleMainHandInput(input);
  } else {
    /\* Handle other inputs \*/
  }
}
```


 For each input in the list, gamepad inputs are dispatched to
 a `checkGamepad()` with the input's `Gamepad` object, taken from
 its `gamepad` property, as an input

 For other devices, we look for `tracked-pointer` devices in the player's
 main hand, dispatching those to a `handleMainHandInput()` method.

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

#### No specification found

No specification data found for `api.XRInputSourceArray.entries`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
PeriodicSyncManager: unregister() method
========================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The **`unregister()`** method of the
 `PeriodicSyncManager` interface unregisters the periodic sync request
 corresponding to the specified tag and returns a `Promise` that resolves
 when unregistration completes.

Syntax
------


```js
unregister(tag)
```

### Parameters

tag

The unique `String` descriptor for the specific background sync.

### Return value

Returns a `Promise` that resolves with `undefined`.

### Exceptions

None.

Examples
--------

 The following example removes a periodic sync to stop syncing articles in the
 background.


```js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.unregister("get-latest-news");
});
```

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

| Specification |
| --- |
| Web Periodic Background Synchronization # dom-periodicsyncmanager-unregister |

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

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

See also
--------

* Richer offline experiences with the Periodic Background Sync API
* A Periodic Background Sync demo app
PeriodicSyncManager: getTags() method
=====================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The **`getTags()`** method of the
 `PeriodicSyncManager` interface returns a `Promise` that
 resolves with a list of `String` objects representing the tags that are
 currently registered for periodic syncing.

Syntax
------


```js
getTags()
```

### Parameters

None.

### Return value

 A `Promise` which resolves with a list of `String` objects
 representing tags that are currently registered for periodic syncing.

### Exceptions

None.

Examples
--------

 The following example uses the `getTags()` method to check if a periodic
 sync task with a given tag is registered.


```js
navigator.serviceWorker.ready.then((registration) => {
  registration.periodicSync.getTags().then((tags) => {
    if (tags.includes("get-latest-news")) skipDownloadingLatestNewsOnPageLoad();
  });
});
```


`skipDownloadingLatestNewsOnPageLoad()` is a developer defined function.

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

| Specification |
| --- |
| Web Periodic Background Synchronization # dom-periodicsyncmanager-gettags |

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

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

See also
--------

* Richer offline experiences with the Periodic Background Sync API
* A Periodic Background Sync demo app
PeriodicSyncManager: register() method
======================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

 The **`register()`** method of the
 `PeriodicSyncManager` interface registers a periodic sync request with the
 browser with the specified tag and options. It returns a `Promise` that
 resolves when the registration completes.

Syntax
------


```js
register(tag, options)
```

### Parameters

`tag`

A unique `String` identifier.

`options` Optional

An `Object` containing the following optional data:

`minInterval`

 The minimum interval time, in milliseconds, at which
 the periodic sync should occur.



### Return value

Returns a `Promise` that resolves with `undefined`.

### Exceptions

`InvalidStateError` `DOMException`

Returned if there is no active `ServiceWorker` present.

`NotAllowedError` `DOMException`

Returned if permission for background periodic sync is not granted.

`InvalidAccessError` `DOMException`

Returned if the active window is not the main window (not of `auxiliary` or `top-level` type).

Examples
--------

 The following asynchronous function registers a periodic background sync at a minimum
 interval of one day from a browsing context:


```js
async function registerPeriodicNewsCheck() {
  const registration = await navigator.serviceWorker.ready;
  try {
    await registration.periodicSync.register("fetch-news", {
      minInterval: 24 \* 60 \* 60 \* 1000,
    });
  } catch {
    console.log("Periodic Sync could not be registered!");
  }
}
```

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

| Specification |
| --- |
| Web Periodic Background Synchronization # dom-periodicsyncmanager-register |

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

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

See also
--------

* Richer offline experiences with the Periodic Background Sync API
* A Periodic Background Sync demo app
FederatedCredential: protocol property
======================================

**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

**Secure context:** This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

 The **`protocol`** property of the
 `FederatedCredential` interface returns a read-only
 string containing a credential's federated identity protocol. If this
 property is `null`, the protocol may be inferred from the
 `FederatedCredential.provider` property.

Value
-----

 A string containing a credential's federated identity protocol (e.g.
 `openidconnect`).

Examples
--------


```js
// TBD
```

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

| Specification |
| --- |
| Credential Management Level 1 # dom-federatedcredential-protocol |

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

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