我使用Videojs Framework在页面上显示视频,但PictureInPicture功能有问题。当用户向下滚动时,我试图自动进入PictureInPicture模式,当用户向上滚动(回到实际的视频播放器(时,我再次尝试退出PictureInPicture模式
我第一次上下滚动时一切正常,但之后的任何尝试都失败了
这是我的密码笔:https://codepen.io/madefortestonly/pen/GRJxMya?editors=1011
这是我从catch块得到的错误消息:
DOMException: Failed to execute 'requestPictureInPicture' on 'HTMLVideoElement': Must be handling a user gesture if there isn't already an element in Picture-in-Picture.
at Html5.requestPictureInPicture (https://vjs.zencdn.net/7.6.6/video.js:22669:23)
at Player.techGet_ (https://vjs.zencdn.net/7.6.6/video.js:26085:34)
at Player.requestPictureInPicture (https://vjs.zencdn.net/7.6.6/video.js:26787:21)
at Player.<anonymous> (pen.js:75:16)
at https://vjs.zencdn.net/7.6.6/video.js:4530:9
顺便说一句,似乎有人和我在这里遇到了完全相同的问题:
为什么video.requestPictureInPicture((只工作一次?
看起来你需要点击滚动页面才能进行下一次尝试,因为滚动不是用户信任事件的一部分。
我试着在向上滚动时用javascript模拟点击,但到目前为止没有成功。
如何修复我的代码,使其在滚动时自动来回移动PictureInPicture,而不告诉用户他/她需要单击页面上的某个位置?
您无法绕过这一点,因为您无法伪造用户交互。另一种实现方式,如在页面中重新调整播放器的大小和位置,可能比浏览器的原生PinP更适合您的用例。