不常用的浏览器 API —— Presentation

561 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第26天,点击查看活动详情

这一节来看 Presentation API,这部分 API 是和演示相关的,用于在指定设备上呈现演示内容,这部分 API 也是很少会使用到的。演示 API 用于处理投屏演示的场景,因为涉及到控制方和展示方,因此演示 API 分为两大部分。

先来看控制处理,首先我们需要向演示页面请求演示内容,这时可以创建 PresentationRequest 对象,PresentationRequest 构造函数位于全局,它可以接收演示 URL 作为参数。之后调用 start 就可以进行内容演示了。我们可以在 navigator 上面获取到 presentation 对象,上面的 defaultRequest 可以获取到默认的演示请求,我们可以通过 postMessage 进行互相通信,来完成演示交互过程。

另一部分是接收方,我们同样可以在 navigator 上获取,我们可以通过 receiver 属性来处理连接信息,在 navigator.presentation.receiver.connectionList 中包含了一系列的链接详情,我们可以以此来实现演示双方的交互。

演示内容这部分 API 确实不是很常用,因为我们更多时候是可以自己实现两个独立的页面,自己实现一套通信协议,为什么不直接使用 Presentation API,可能更多还是兼容问题。这部分内容毕竟支持程度不是很好,我们可能无法实现较为灵活的效果。

这部分 API 同样也需要运行在安全上下文中,因为 Presentation 的连接是可以获得较高的用户权限的,不安全的 API 会带来隐患。

实际上演示内容这部分有一套很完整的规范定义,感兴趣可以阅读 演示文稿接口 (w3.org),不过由于种种原因,在浏览器的实现中就不尽人意了,不同的浏览器差别还是比较大的,因此可以作为了解,但是不建议使用这部分 API。