H5的video标签的属性和播放事件

本文详细介绍了HTML5中<video>标签的属性及其事件。包括autoplay、controls等属性的作用,以及onplay、onwaiting等事件的触发时机和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<video> 标签是 HTML 5 的新标签。

属性有:autoplay   controls   end   loopend   loopstart   playcount   poster   src   start   width

属性具体描述请产考w3C html5手册


video标签有许多默认的事件。从开始加载到播放结束,都经历了哪些事件呢?这些事件的触发顺序如何?

[1]HTML5:onplay
[2]HTML5:onwaiting
[3]HTML5:ondurationchange
[4]HTML5:onloadedmetadata
[5]HTML5:onloadeddata
[6]HTML5:oncanplay
[7]HTML5:onplaying
[8]HTML5:oncanplaythrough
[9]HTML5:onended

onplay:


播放器不在保持“暂停”状态,即“play()”方法被调用或者autoplay属性设置为true期望播放器自动开始播放。


onwaiting:
播放由于下一帧数据未获取到导致播放停止,但是播放器没有主动预期其停止,仍然在努力的获取数据,简单的说就是在等待下一帧视频数据,暂时还无法播放。

ondurationchange:
duration(视频播放总时长)属性被更新。

onloadedmetadata:

获取视频meta信息完毕,这个时候播放器已经获取到了视频时长和视频资源的文件大小。

onloadeddata:
视频播放器第一次完成了当前播放位置的视频渲染。

oncanplay:
视频播放器已经可以开始播放视频了,但是只是预期可以正常播放,不保证之后的播放不会出现缓冲等待。

onplaying:
真正处于播放的状态,这个时候我们才是真正的在观看视频。

oncanplaythrough:

播放器认为从现在开始播放,直到播放结束,不再会因为等待后面的数据而出现缓冲等待。(注意,这个只是播放器根据网速和播放进度的预期估计,不代表后面的数据全部都预先缓冲完毕了,如果你手动推动控制栏的进度条,可能仍然会出现缓冲的,或者你后面网络断开了,一样没办法继续播放,除非是真的缓冲完了)

onended:

播放完毕。



事件使用实例:

如果我们想要使用默认的controls,那么在有的安卓浏览器上,如果网速不好的话,点击后没有任何反应,其实已经在加载了,但是表面上看起来没有任何的变化,

就会让人误以为视频不能加载。这里解决这个方法就可以使用视频播放时不同的事件来处理,如给视频表面加一个蒙版。上面写上loading...

<div class="t-video">
<video controls="controls" class="myVideo"  controls="controls" autoplay>
<source type="video/mp4"></source>
</video>
<div class="showLoad">
<ion-spinner icon="ios"></ion-spinner>
</div>
</div>


$('.myVideo')[0].addEventListener('loadstart',function(){
$('.showLoad').css('display','block')
})
$('.myVideo')[0].addEventListener('loadedmetadata',function(){
$('.showLoad').css('display','none')
})






### 苹果设备上 H5 页面中 `video` 标签播放视频的兼容性解决方案 对于苹果设备上的 HTML5 `<video>` 标签播放视频存在的兼容性问题,主要集中在防止 iOS 默认全屏播放以及确保内联播放正常工作。为了使视频能够在苹果设备上顺利播放并保持良好的用户体验,建议采用如下配置: #### 使用合适的属性设置 在 `<video>` 标签中加入特定于 WebKit 浏览器(如 Safari)的属性可以帮助控制视频的行为方式。这些属性能够有效避免iOS系统下的自动全屏现象,并允许视频以内联模式播放。 ```html <video id="video" playsinline="true" <!-- 启用内嵌播放 --> webkit-playsinline="true" <!-- 针对旧版WebKit浏览器启用内嵌播放 --> x-webkit-airplay="allow" <!-- 支持AirPlay功能 --> airplay="allow" <!-- 明确声明支持AirPlay --> src="./video.mp4" <!-- 设置视频源文件路径 --> poster="./poster.png"> <!-- 设置封面图片 --> </video> ``` 上述代码片段展示了如何利用多个属性来优化苹果设备上的视频播放体验[^1]。值得注意的是,在较新的版本中仅需指定 `playsinline=true` 即可满足大部分场景的需求;而对于更早版本,则可能还需要额外添加 `webkit-playsinline=true` 来确保兼容性[^3]。 此外,考虑到不同平台间的差异性未来可能出现的变化,推荐开发者密切关注官方文档技术社区内的最新动态,以便及时调整策略以应对新情况的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值