CaptureController:setFocusBehavior() 方法
该 CaptureController
接口的 setFocusBehavior()
方法控制与关联的 MediaDevices.getDisplayMedia()
Promise
fulfilled 时捕获的选项卡或窗口是否将获得焦点,或者焦点是否将保留在包含捕获应用程序的选项卡中。
可以在 MediaDevices.getDisplayMedia()
调用之前多次设置此行为,或者在其 Promise
解析后立即设置一次。之后,焦点行为将被视为最终确定,并且无法更改。
语法
js
setFocusBehavior(focusBehavior)
参数
focusBehavior
-
一个枚举值,描述用户代理是否应将焦点转移到捕获的显示表面,或者保持捕获应用程序处于焦点状态。可能的取值包括
focus-captured-surface
(转移焦点)和no-focus-change
(将焦点保持在捕获应用程序上)。
返回值
无(undefined
)。
异常
InvalidStateError
DOMException
-
如果抛出
- 捕获流已停止。
- 用户选择共享屏幕(
displaySurface
类型monitor
)而不是browser
选项卡或window
- 您无法聚焦监视器。在这种情况下,异常将在MediaDevices.getDisplayMedia()
Promise
解析后抛出。 - 在
MediaDevices.getDisplayMedia()
Promise
fulfilled 之后,经过足够的时间,焦点行为已最终确定。
示例
js
// Create a new CaptureController instance
const controller = new CaptureController();
// Prompt the user to share a tab, window, or screen.
const stream = await navigator.mediaDevices.getDisplayMedia({ controller });
// Query the displaySurface value of the captured video track
const [track] = stream.getVideoTracks();
const displaySurface = track.getSettings().displaySurface;
if (displaySurface == "browser") {
// Focus the captured tab.
controller.setFocusBehavior("focus-captured-surface");
} else if (displaySurface == "window") {
// Do not move focus to the captured window.
// Keep the capturing page focused.
controller.setFocusBehavior("no-focus-change");
}
规范
规范 |
---|
屏幕捕获 # dom-capturecontroller-setfocusbehavior |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。