video 满屏显示_Video.js在播放时进入全屏

在使用Video.js时,遇到全屏播放的问题。当点击播放按钮时,视频无法进入全屏模式。错误提示为:'Object [object Object] has no method 'requestFullScreen''。解决方法包括:将全屏代码移至用户触发的事件(如点击)中,因为浏览器出于安全考虑不允许在非用户交互事件中触发全屏;同时,Video.js 4.0.x版本的minified版本导致一些公开属性和方法被混淆,如requestFullScreen现在是player1.Pa(),且cancelFullScreen不存在。建议使用未混淆的video.js版本或等待4.x稳定版。
摘要由CSDN通过智能技术生成

I've been searching around for a long time but still haven't found a valid solution for my problem. I just cant seem to get the video player to enter fullscreen. The API does have many examples but none of them seem to work.

The jQuery version included on the page I am currently working on is 1.8.2. Also, I am using parallax-1.1.js and libraries required for it to work properly so that may also be an issue.

The client I am working for wants the site to have responsive design, with the ability of the player to directly go to fullscreen when the "Play" button is clicked. This functionality should be avalable both on desktop, and mobile/tablet browsers. On the video page, there should be 3 video players, each of them has unique IDs, and they also have a common CSS class.

Some of the code I tried didn't work well. Here's an example JS code snippet controlling one of the video HTML tags.

Example:

player1 = _V_('video-1');

player1.on("play",

function () {

this.requestFullScreen();

});

player1.on("ended",

function () {

this.cancelFullScreen();

});

The code generates this error:

Uncaught TypeError: Object [object Object] has no method 'requestFullScreen'

I am working with the latest version of Google Chrome.

解决方案

There are a two problems to be solved here.

First, you cannot go to full screen inside a 'play' event handler. For security and good user experience, browsers will only let you trigger full screen inside a user-triggered event, like a 'click'. You can't have every web page going to full screen as soon as you visit it, and you can cause a video to start playing automatically, which would violate that rule. So you need to move this to a 'click' handler on the actual play button.

The second is a big problem with Video.js 4.0.x, which is that it's minified using Google Closure Compiler with Advanced Optimizations. So many of the public properties and methods are obfuscated, making them difficult/impossible to use. In this case, requestFullScreen is now player1.Pa(). And, as far as I can tell, cancelFullScreen doesn't exist at all.

Here are some options for how to handle this:

Use the obfuscated method name. I don't recommend this, because a) the name will change with every minor version upgrade (e.g. 4.0.5) and b) it will make your code unreadable, and c) you can't use cancelFullScreen.

Get an un-minified copy video.js and host it yourself. (You can use Uglify or another minifier that won't mess with the method names.) Video.js doesn't provide this file, so you have to clone the git repo and run the build script yourself. And you don't get the advantage of using video.js's CDN for free.

Use an older version of video.js and wait until 4.x is ready for prime time.

Don't use video.js at all. Consider jPlayer and jwPlayer or roll your own.

I recommend 2 or 3.

Update: It looks like this particular issue has been fixed, but it has not made it into release yet.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值