CaptureController: setFocusBehavior() 方法
CaptureController 接口的 setFocusBehavior() 方法控制在关联的 MediaDevices.getDisplayMedia() Promise fulfilled 时,捕获的选项卡或窗口是否会获得焦点,还是说焦点将保留在包含捕获应用程序的选项卡上。
您可以在调用 MediaDevices.getDisplayMedia() 之前多次设置此行为,或在其 Promise 解析后立即设置一次。在那之后,焦点行为被认为是最终确定的,无法再更改。
语法
js
setFocusBehavior(focusBehavior)
参数
focusBehavior-
一个枚举值,用于描述用户代理应将焦点转移到捕获的显示表面,还是将捕获的应用程序保持焦点。可能的值为
focus-captured-surface(转移焦点)和no-focus-change(将焦点保留在捕获的应用程序上)。
返回值
无 (undefined)。
异常
InvalidStateErrorDOMException-
在以下情况下抛出
- 捕获流已停止。
- 用户选择共享屏幕(
displaySurface类型为monitor),而不是共享browser选项卡或window— 您无法使监视器获得焦点。在这种情况下,异常将在MediaDevices.getDisplayMedia()Promise解析后抛出。 MediaDevices.getDisplayMedia()Promisefulfilled 后已过去足够长的时间,焦点行为已最终确定。
示例
基本的 setFocusBehavior() 用法
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 |
浏览器兼容性
加载中…