Document Picture-in-Picture API 实战指南:在浏览器中实现浮动聊天窗口
Web API家族新成员:文档画中画API(Document Picture-in-Picture API)
文档画中画API(Document Picture-in-Picture API)是Web API家族中的一项新功能,其原始试用版已随Chrome M111于2023年3月7日发布。虽然目前可能无法覆盖所有浏览器,但它为开发者提供了一些极具实用价值的功能。
什么是画中画(Picture-in-Picture,PiP)?
画中画(PiP)是一项浏览器功能,它允许创建一个浮动窗口,该窗口可以置于其他窗口之上。用户可以自由移动和调整窗口大小,从而在观看视频的同时继续浏览其他页面或应用,实现多任务处理。
在现代浏览器(如Chrome、Firefox和Safari)中,开发者可以通过调用HTMLVideoElement的requestPictureInPicture()方法,将现有的HTMLVideoElement视频流弹出到独立窗口中。
videoElement.requestPictureInPicture();
目前,Chrome、Edge和Safari支持该Web API,但Firefox暂时不支持通过编程方式触发PiP功能。

文档画中画API的突破
传统的画中画功能仅限于视频播放,这在一定程度上限制了其应用场景。而文档画中画API则突破了这一限制,它允许开发者创建一个始终置顶的浮动窗口,并在原页面失活时自动关闭。
以下是一个简单的示例代码,展示如何使用文档画中画API弹出一个窗口:
const pipWindow = await documentPictureInPicture.requestWindow();
pipWindow.document.body.innerHTML = "你好!";
与window.open()方法相比,文档画中画API的显著优势在于无需通过postMessage进行父窗口与弹出窗口之间的通信。开发者可以直接访问JavaScript上下文,并将DOM元素从父窗口移动到弹出窗口中:
// 从父窗口获取元素
const elem = document.getElementById("div#parent");
// 添加到弹出窗口
pipWindow.document.body.appendChild(elem);
当前试用阶段的注意事项
需要注意的是,文档画中画API目前仍处于原始试用阶段。开发者可以通过以下方式启用该功能:
- 注册试用:https://developer.chrome.com/origintrials/#/view_trial/1885882343961395201
- 在Chrome中启用实验性标志:
chrome://flags/#document-picture-in-picture-api
试用阶段的主要目的是帮助开发者构建演示和原型,同时让Chrome团队了解该API的实际使用场景及其与其他Web技术的交互方式。
实际应用场景:屏幕共享中的聊天窗口
在屏幕共享场景中,用户通常会失去对聊天界面的访问权限,需要频繁切换浏览器标签查看聊天内容。文档画中画API可以解决这一问题,通过弹出一个独立的聊天窗口,使用户在屏幕共享时仍能追踪对话。
以下是实现步骤:
-
检查文档画中画API是否支持(需要Chrome 111+并启用实验性标志):
if ('documentPictureInPicture' in window) { // 检查用户是否正在屏幕共享 if (screenShareEnabled) { // 确认共享的是标签页而非整个屏幕 if (screenVideoTrack.__proto__[Symbol.toStringTag] === 'BrowserCaptureMediaStreamTrack') { // 弹出聊天窗口 pipWindow = await window.documentPictureInPicture.requestWindow({ initialAspectRatio: 1 / 7, }); } } } -
在弹出窗口中渲染聊天组件:
import { defineCustomElements } from 'https://cdn.jsdelivr.net/npm/@dytesdk/ui-kit/loader/index.es2017.js'; defineCustomElements(); const chatElem = document.createElement('dyte-chat'); document.body.appendChild(chatElem); -
将主窗口的
meeting上下文传递到弹出窗口:pipWindow.document.querySelector('dyte-chat').meeting = meeting;
通过上述步骤,用户可以在屏幕共享时实时查看聊天内容,而无需频繁切换标签页。

总结
文档画中画API是一项令人兴奋的新功能,它进一步缩小了原生应用与浏览器应用之间的差距。尽管目前仍处于试用阶段,且未来可能会有所调整,但它已经展示了许多传统方式无法实现的应用场景。对于开发者而言,这是一个值得探索和利用的强大工具。
原文链接: https://dyte.io/blog/document-picture-in-picture-api-for-video-calls/
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- Rest API 教程 – 完整的初学者指南
- API Key 密钥 vs OAuth 2.0:身份认证的比较
- Claude API 能使用 OpenAI 接口协议吗?
- 使用DeepSeek R1、LangChain和Ollama构建端到端生成式人工智能应用
- 如何获取通义千问 API Key 密钥(分步指南)
- 您需要了解的OpenAI Assistants API功能 – PageOn.ai
- DRF库详解:用Django轻松搭建功能强大的API服务
- 一文搞懂在 HTTP 如何 one-api 调用,实操指南来袭!
- 探索海洋数据的宝库:Amentum海洋数据探测API的潜力
- 云原生 API 网关 APISIX 入门教程
- API Key 密钥:深入理解与应用
- 2025年国内免费生成式 AI API 平台大盘点:探索国产大模型的开放能力