• 最新
  • 热门
  • 所有
  • 外汇
  • 24 小时
  • 期货
  • 基金
  • 贵金属
  • 股票
这个 Web 新 API 让任何内容都能画中画!

这个 Web 新 API 让任何内容都能画中画!

2025 年 8 月 14 日

中信证券:重视国产化与出海合力下的 AI 时代应用机遇

2025 年 10 月 13 日

全市场唯一钢铁 ETF(515210) 涨超 0.7%,铁矿石人民币结算比例加大

2025 年 10 月 13 日
金价站上4060美元/盎司 高盛瑞银不「恐高」 继续看多

金价站上 4060 美元/盎司 高盛瑞银不 「恐高」 继续看多

2025 年 10 月 13 日
广告

又一报告拉响警报:美国经济恐陷 「高 GDP、低就业」 怪圈!

2025 年 10 月 13 日

收评:主要股指低开后大幅反弹 稀土永磁股领涨 汽车零部件股领跌

2025 年 10 月 13 日
AI技术滥用调查:明星可被「一键换装」,「擦边」内容成流量密码,技术防线为何形同虚设?

AI 技术滥用调查:明星可被 「一键换装」,「擦边」 内容成流量密码,技术防线为何形同虚设?

2025 年 10 月 13 日

Windows 10 明日正式停服!专家:5 亿用户成 「裸奔靶子」

2025 年 10 月 13 日
两大龙头提价 稀土板块「王者归来」!机构高频调研股出炉

两大龙头提价 稀土板块 「王者归来」!机构高频调研股出炉

2025 年 10 月 13 日
法国政坛风暴再起!勒科尔尼二次组阁名单引发反对派不信任案危机,金价再创历史新高

法国政坛风暴再起!勒科尔尼二次组阁名单引发反对派不信任案危机,金价再创历史新高

2025 年 10 月 13 日
以色列、哈马斯释放被扣押人员!特朗普宣布:加沙战争已结束 哈马斯将解除武装

以色列、哈马斯释放被扣押人员!特朗普宣布:加沙战争已结束 哈马斯将解除武装

2025 年 10 月 13 日

现货黄金,再创新高

2025 年 10 月 13 日
本周51只新基金启动募集 权益基金为绝对主力

本周 51 只新基金启动募集 权益基金为绝对主力

2025 年 10 月 13 日
金桂财经
广告
2025 年 10 月 13 日 星期一
联系我们
合作建议
  • 首页
  • 24 小时
  • 全球金融
  • 股市风云
  • 基金动态
  • 金财眼
  • 期货新闻
  • 期货研报
  • 外汇市场
  • 贵金属
  • 未来科技
  • 登录& 注册
没有结果
查看所有结果
  • 首页
  • 24 小时
  • 全球金融
  • 股市风云
  • 基金动态
  • 金财眼
  • 期货新闻
  • 期货研报
  • 外汇市场
  • 贵金属
  • 未来科技
没有结果
查看所有结果
金桂财经
没有结果
查看所有结果

这个 Web 新 API 让任何内容都能画中画!

来自 金桂财经
2025 年 8 月 14 日
在 科技
0

大家好,我是 Immerse,一名独立开发者、内容创作者。

YOU MAY ALSO LIKE

别再为天价国际话费买单了!

算薪计算器 找工作时的好帮手~

  • 关注公众号:# 沉浸式趣谈,获取最新文章 (更多内容只在公众号更新)
  • 个人网站:https://yaolifeng.com 也同步更新。
  • 转载请在文章开头注明出处和版权信息。

我会在这里分享关于编程、独立开发、AI 干货、开源、个人思考等内容。

如果本文对您有所帮助,欢迎动动小手指一键三连 (点赞、评论、转发),给我一些支持和鼓励,谢谢!

「画中画」(Picture-in-Picture, PiP) 说白了,就是让你能一边看视频,一边干别的,互不耽误。就像给你的桌面贴了个能播放视频的 「便利贴」,你可以随便拖动它,调整大小,它还总在最前面,贼方便。

现在主流的搞法:老朋友 requestPictureInPicture()

其实,想让 <video> 元素实现画中画,现在已经有挺成熟的方法了,那就是直接在视频元素上调用 requestPictureInPicture() 这个 API。

用起来也挺简单,基本上就是:

  1. 先搞个 <video> 标签,放上你的视频。
  2. 找个时机 (比如用户点个按钮),用 JavaScript 拿到这个 video 元素,然后调用 video.requestPictureInPicture()。

搞定!

给个简单的代码片段:

<video id="myVideo" src="your_video.mp4" controls width="300"></video>
<button id="pipButton"> 开启画中画</button>

<script>
    const video = document.getElementById('myVideo');
    const pipButton = document.getElementById('pipButton');

    pipButton.addEventListener('click', async () => {
        // 先检查浏览器支不支持,是个好习惯
        if (document.pictureInPictureEnabled) {
            try {
                // 如果视频没在画中画模式,就请求进入
                if (document.pictureInPictureElement !== video) {
                    await video.requestPictureInPicture();
                } else {
                    // 如果已经在画中画了,就退出
                    await document.exitPictureInPicture();
                }
            } catch (error) {
                console.error('操作画中画失败:', error);
            }
        } else {
            console.log('你的浏览器不支持画中画功能。');
        }
    });

    // 还可以监听进入和退出的事件,搞点事情
    video.addEventListener('enterpictureinpicture', () => {
        console.log('进入画中画啦!');
        pipButton.textContent = '退出画中画';
    });

    video.addEventListener('leavepictureinpicture', () => {
        console.log('退出画中画了。');
        pipButton.textContent = '开启画中画';
    });
</script>

大部分现代浏览器 (Chrome, Edge, Firefox, Safari 这些) 对这个 API 支持得都还不错 (当然,细节上可能有点小差异,用的时候最好还是查查 MDN 或者 Can I Use)。

那 documentPictureInPicture.requestWindow 是个啥?

window.documentPictureInPicture.requestWindow 更像是个 「升级版」 或者说 「野心更大」 的亲戚。

requestPictureInPicture() 这个老朋友,它的目标很明确,就是把 <video> 元素 扔进画中画窗口。

而 documentPictureInPicture.requestWindow() 这个新来的呢,它的目标是 把任意的 HTML 内容(理论上是这样的,比如一个 <div>,里面可以包含视频、按钮、文字等等) 放进那个悬浮的小窗口里!

小结一下

  • 目前最常用、最稳妥的实现方式是针对 <video> 元素的 requestPictureInPicture() API。兼容性相对较好,用起来也直接。
  • 那个新出的 documentPictureInPicture.requestWindow API 呢,目标更宏大,想让任意 HTML 都能 PiP。

对这个新技术感兴趣的朋友,可以去翻翻官方文档 (下面附了链接),了解下最新进展。

不过动手实践的话,还是先从老朋友 requestPictureInPicture() 开始吧,至少不会被兼容性搞得头秃,哈哈。

参考资料放这儿了:

  • 关于 Document PiP (新 API): https://developer.chrome.com/docs/web-platform/document-picture-in-picture?hl=zh-cn
  • MDN 上的 Document PiP: https://developer.mozilla.org/zh-CN/docs/Web/API/DocumentPictureInPicture
  • MDN 上的 requestWindow 方法: https://developer.mozilla.org/zh-CN/docs/Web/API/DocumentPictureInPicture/requestWindow
  • (当然,也别忘了查查 HTMLVideoElement.requestPictureInPicture() 这个老朋友的文档)

其他好文推荐

2025 最新!独立开发者穷鬼套餐

Windows 安装 Claude Code 的新姿势,保姆级教程

最近 Vibe Coding 的实践经验分享

分享一款 AI 自动生成流程图的工具

一个 Cursor mdc 自动生成器,基于 Gemini 2.5,很实用!

这个 361k Star 的项目,一定要收藏!

搞定 XLSX 预览?别瞎找了,这几个库 (尤其最后一个) 真香!

1 分钟把简历变成个人网站!这个免费工具太香了

关于 MCP,这几个网站你一定要知道!

做 Docx 预览,一定要做这个神库!!

【完整汇总】 近 5 年 JavaScript 新特性完整总览

关于 Node,一定要学这个 10+ 万 Star 项目!

文章来源:w2solo

Search

没有结果
查看所有结果

一周热门

中信证券:重视国产化与出海合力下的 AI 时代应用机遇

2025 年 10 月 13 日

全市场唯一钢铁 ETF(515210) 涨超 0.7%,铁矿石人民币结算比例加大

2025 年 10 月 13 日
金价站上4060美元/盎司 高盛瑞银不「恐高」 继续看多

金价站上 4060 美元/盎司 高盛瑞银不 「恐高」 继续看多

2025 年 10 月 13 日

又一报告拉响警报:美国经济恐陷 「高 GDP、低就业」 怪圈!

2025 年 10 月 13 日

收评:主要股指低开后大幅反弹 稀土永磁股领涨 汽车零部件股领跌

2025 年 10 月 13 日
AI技术滥用调查:明星可被「一键换装」,「擦边」内容成流量密码,技术防线为何形同虚设?

AI 技术滥用调查:明星可被 「一键换装」,「擦边」 内容成流量密码,技术防线为何形同虚设?

2025 年 10 月 13 日

Windows 10 明日正式停服!专家:5 亿用户成 「裸奔靶子」

2025 年 10 月 13 日
两大龙头提价 稀土板块「王者归来」!机构高频调研股出炉

两大龙头提价 稀土板块 「王者归来」!机构高频调研股出炉

2025 年 10 月 13 日
法国政坛风暴再起!勒科尔尼二次组阁名单引发反对派不信任案危机,金价再创历史新高

法国政坛风暴再起!勒科尔尼二次组阁名单引发反对派不信任案危机,金价再创历史新高

2025 年 10 月 13 日
以色列、哈马斯释放被扣押人员!特朗普宣布:加沙战争已结束 哈马斯将解除武装

以色列、哈马斯释放被扣押人员!特朗普宣布:加沙战争已结束 哈马斯将解除武装

2025 年 10 月 13 日
金桂财经

2025 年 10 月
一 二 三 四 五 六 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 9 月    

近期动态

  • 中信证券:重视国产化与出海合力下的 AI 时代应用机遇
  • 全市场唯一钢铁 ETF(515210) 涨超 0.7%,铁矿石人民币结算比例加大
  • 金价站上 4060 美元/盎司 高盛瑞银不 「恐高」 继续看多
  • 又一报告拉响警报:美国经济恐陷 「高 GDP、低就业」 怪圈!
  • 收评:主要股指低开后大幅反弹 稀土永磁股领涨 汽车零部件股领跌
  • AI 技术滥用调查:明星可被 「一键换装」,「擦边」 内容成流量密码,技术防线为何形同虚设?
广告

Copyright © 2025 广州金桂广告传媒有限公司. 粤 ICP 备 2025390655 号

  • 关于本站
  • 联系我们
  • 隐私政策
没有结果
查看所有结果
  • 登录& 注册

Copyright © 2025 广州金桂广告传媒有限公司. 粤 ICP 备 2025390655 号

  • 登录
  • 注册
忘记密码?
Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.
body::-webkit-scrollbar { width: 7px; } body::-webkit-scrollbar-track { border-radius: 10px; background: #f0f0f0; } body::-webkit-scrollbar-thumb { border-radius: 50px; background: #dfdbdb }