CaptureController: forwardWheel() 方法
CaptureController
接口的 forwardWheel()
方法开始将引用元素上触发的 wheel
事件转发到关联的已捕获显示表面的视口。
forwardWheel()
方法必须通过 瞬时激活 调用。具体来说,唯一能成功调用它的事件是 click
和 input
。此外,当首次尝试屏幕捕获时,用户会被请求共享标签页的权限;如果用户授予了权限,这也包括滚动已捕获标签页的权限。如果相关权限已经是 "granted"
,则不需要瞬时激活。
语法
js
forwardWheel(element)
参数
element
-
对你想转发
wheel
事件到已捕获显示表面的元素的引用。
返回值
异常
InvalidStateError
DOMException
-
抛出时
- 原始
MediaDevices.getDisplayMedia()
调用返回的捕获MediaStream
不再捕获,例如因为关联的MediaStreamTrack
对象已调用了stop()
。 - 应用程序正在捕获自身。
- 尝试在没有瞬时激活的情况下调用
forwardWheel()
,而用户尚未授予使用它的权限。
- 原始
NotAllowedError
DOMException
-
抛出时
- 页面的
captured-surface-control
权限策略不允许页面使用 Captured Surface Control API。 - 用户明确拒绝了捕获显示图面的权限。
- 页面的
NotSupportedError
DOMException
-
正在捕获的表面类型不是浏览器标签页。
示例
基本的 forwardWheel()
用法
在我们由 使用捕获的表面控制 API 解释的实时演示中,我们在捕获的 getDisplayMedia()
Promise fulfilled 后调用了一个名为 startForwarding()
的函数。
js
// Create controller and start capture
const controller = new CaptureController();
videoElem.srcObject = await navigator.mediaDevices.getDisplayMedia({
controller,
});
// ...
startForwarding();
该函数调用 forwardWheel()
方法,并将正在显示捕获流的 <video>
元素作为引用传递给它。
js
async function startForwarding() {
try {
await controller.forwardWheel(videoElem);
} catch (e) {
console.log(e);
}
}
这导致在引用元素上触发的 wheel
事件被转发到已捕获的显示表面,使捕获应用程序能够滚动它。
规范
规范 |
---|
Captured Surface Control # dom-capturecontroller-forwardwheel |
浏览器兼容性
加载中…