CaptureController: forwardWheel() 方法
CaptureController 接口的 forwardWheel() 方法开始将引用元素上触发的 wheel 事件转发到关联的已捕获显示表面的视口。
forwardWheel() 方法必须通过 瞬时激活 调用。具体来说,唯一能成功调用它的事件是 click 和 input。此外,当首次尝试屏幕捕获时,用户会被请求共享标签页的权限;如果用户授予了权限,这也包括滚动已捕获标签页的权限。如果相关权限已经是 "granted",则不需要瞬时激活。
语法
js
forwardWheel(element)
参数
element-
对你想转发
wheel事件到已捕获显示表面的元素的引用。
返回值
异常
InvalidStateErrorDOMException-
抛出时
- 原始
MediaDevices.getDisplayMedia()调用返回的捕获MediaStream不再捕获,例如因为关联的MediaStreamTrack对象已调用了stop()。 - 应用程序正在捕获自身。
- 尝试在没有瞬时激活的情况下调用
forwardWheel(),而用户尚未授予使用它的权限。
- 原始
NotAllowedErrorDOMException-
抛出时
- 页面的
captured-surface-control权限策略不允许页面使用 Captured Surface Control API。 - 用户明确拒绝了捕获显示图面的权限。
- 页面的
NotSupportedErrorDOMException-
正在捕获的表面类型不是浏览器标签页。
示例
基本的 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 |
浏览器兼容性
加载中…