如何在 HTML5 视频中禁用画中画模式

Posted

技术标签:

【中文标题】如何在 HTML5 视频中禁用画中画模式【英文标题】:How to disable Picture in Picture mode on HTML5 video 【发布时间】:2019-06-24 19:00:39 【问题描述】:

如何在 html5 视频中禁用画中画模式?

请注意,我指的不是question,它与 苹果的 AVKit

我知道你可以用controlsList="nodownload"禁用视频下载,画中画模式怎么可能。

<video controls controlsList="nodownload">
  <source src="https://www.w3schools.com/html/mov_bbb.ogg" type="video/mp4">
  <source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/ogg">
</video>

【问题讨论】:

【参考方案1】:

根据https://wicg.github.io/picture-in-picture/#disable-pip 的规范, 控制它的属性是disablePictureInPicture

<video controls disablePictureInPicture controlsList="nodownload">
  <source src="https://www.w3schools.com/html/mov_bbb.ogg" type="video/mp4">
  <source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/ogg">
</video>

通过javascript实现同样的效果:

<video id="vid" controls muted>
<source src="https://www.w3schools.com/html/mov_bbb.mp4">
</video>
<script>
vid=document.getElementById("vid")
vid.disablePictureInPicture = true
</script>

【讨论】:

@m93a 与 macOS 上的 76 相同。猜猜有一个需要报告的错误...... 我认为kitsune 不适合举报此问题。 Bugzilla 是报告 Firefox 错误的地方。 是的,我做了之后才意识到!随时举报 bugzilla.mozilla.org/show_bug.cgi?id=1611831 Mozilla 认为不遵循规范是一项功能。 也适用于 Opera 烦人的弹出功能!【参考方案2】:

如果你想通过 JavaScript 来实现。 此代码适用于您页面上的所有视频,它会禁用下载、拍照和右键单击上下文,其中还包含下载选项。

您可能希望将jQuery 更改为$ 我编写了这段代码,将其添加到我在 WordPress 中的主题中,以禁用我网站中所有视频的下载。

jQuery('video').on("loadeddata", function() 
    jQuery('video').attr('controlsList', 'nodownload');
    jQuery('video').bind('contextmenu',function()  return false; );
    jQuery('video').attr('disablePictureInPicture', 'true');
); 

【讨论】:

请注意,您正在应用属性并将函数绑定到页面的所有 ,每个元素都会触发loadeddata 事件。您必须在 loadeddata 事件处理程序中将 jQuery('video') 替换为 jQuery(this)【参考方案3】:

使用这个:

<video controls disablePictureInPicture>

disablePictureInPicture 是一个布尔标志,将禁用三点菜单中的画中画项。

【讨论】:

以上是关于如何在 HTML5 视频中禁用画中画模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Safari 10 上触发画中画

如何通过 html/js 在 Firefox 中禁用 Pip(画中画)?

Safari 画中画 - 自定义 HTML5 视频控制器

如何在Mac上的Safari浏览器中输入画中画视频?

画中画模式是不是支持奥利奥?

如何在 webview 中禁用与 html5 视频的交互或正确捕获它们的异常?