RestrictionTarget: fromElement() static method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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 fromElement() static method of the RestrictionTarget interface returns a RestrictionTarget instance that can be used to restrict a captured video track to a specified DOM element (plus its descendants).

Syntax

js
RestrictionTarget.fromElement(element)

Parameters

element

A reference to an Element that you want to use as a restriction target. For an element to be used as a restriction target, it must:

  • Form a stacking context.
  • Be flattened in 3D space (for example, it is not subjected to any 3D transforms).
  • Be rendered (for example, not be off-screen or hidden via display: none).
  • Contain only one box fragment (for example, not be broken across multiple lines).

If it does not meet the above criteria, it is considered to be not eligible for restriction.

In addition, the element will not be captured if the track being restricted has clones (that is, created by BrowserCaptureMediaStreamTrack.clone()) or is captured from a different tab to the current user's tab (passed via Window.postMessage(), for example).

Note: When the element is captured, any alpha-channel value set on it is not included. If the restriction target element is semi-transparent, it will end up completely opaque in the capture and therefore end up looking different.

Return value

A Promise that resolves to a RestrictionTarget object instance, which can then be passed to BrowserCaptureMediaStreamTrack.restrictTo() to restrict the video captured in the track to just the particular DOM element the RestrictionTarget was created with.

RestrictionTarget objects are serializable. They can be passed to another document using mechanisms such as Window.postMessage().

The promise will reject if the restriction target element is not eligible for restriction.

Examples

js
// Options for getDisplayMedia()
const displayMediaOptions = {
  preferCurrentTab: true,
};

// Create restriction target from DOM element
const demoElem = document.querySelector("#demo");
const restrictionTarget = await RestrictionTarget.fromElement(demoElem);

// Capture video stream from user's webcam and isolate video track
const stream =
  await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
const [track] = stream.getVideoTracks();

// Restrict video track
await track.restrictTo(restrictionTarget);

// Broadcast restricted stream in <video> element
videoElem.srcObject = stream;

See Using the Element Capture and Region Capture APIs for in-context example code.

Specifications

Specification
Element Capture
# dom-restrictiontarget-fromelement

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
fromElement() static method
Experimental
Chrome – Full support
Chrome 132 (Release date: 2025-01-14)
footnote Full support
Edge – Full support
Edge 132 (Release date: 2025-01-17)
footnote Full support
Firefox – No support
Firefox
footnote No support
Opera – Full support
Opera 117 (Release date: 2025-02-13)
footnote Full support
Safari – No support
Safari
footnote No support
Chrome Android – No support
Chrome Android
footnote No support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – No support
Safari on iOS
footnote No support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

See also