javascript - Video-Js 点击事件:如何不触发控制栏按钮
问题描述
我是 Video-js 的新手,我想用它在我的网站上放置一个视频播放器,我正在尝试在视频上添加自定义的“点击”事件(或移动设备的“点击”),以覆盖自然video-js 播放器的行为。当我单击或点击视频时,我希望播放下一个视频,而不是 togle 播放/暂停视频。
该代码有效,但即使我点击控制栏的按钮,其中有控制按钮,如:播放,音量,全屏,事件也会触发。
如果您希望仅在用户单击视频(而不是在控制栏的按钮上)时触发单击事件,是否需要使用另一个事件名称,或者是否在事件函数中进行测试以测试是否完成了单击在执行代码之前要返回控制栏?
目前我只有这个:
var player = videojs('videojs-player', {}, function() {//some code} );
player.on('click', function() {
alert('video was clicked');
// do something
};
非常感谢您的帮助。
解决方案
您需要使用evt
传递给点击处理程序的事件对象(在下面的示例中)来识别用户点击播放器的位置。
在下面的示例中,我们查看target
事件对象的属性以确定哪个元素触发了事件。然后我们检查tagName
属性。如果不等于VIDEO
我们忽略点击。
var player = videojs('videojs-player', {}, function() {
//some code
});
player.on('click', function(evt) {
if (evt.target.tagName === 'VIDEO') {
console.log('video was clicked');
}
});
<link href="https://vjs.zencdn.net/5.4.6/video-js.min.css" rel="stylesheet"/>
<script src="https://vjs.zencdn.net/5.4.6/video.min.js"></script>
<video id="videojs-player" class="video-js vjs-default-skin"
controls preload="auto" width="640" height="264">
<source src="https://cdn.jsdelivr.net/npm/big-buck-bunny-1080p@0.0.6/video.mp4" type="video/mp4" />
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
推荐阅读
- node.js - Redux Toolkit - Slice 实用方法
- python - 神经网络对少数特定类别进行了大量分类
- r - dplyr filter() 为某些但不是所有列值返回 <0 rows>
- data-visualization - Vega Edge 捆绑(定向)- 改变每个边缘的厚度以显示连接强度
- ios14 - 包含 Siri 和 Widget 的项目的 IntentHandler
- node.js - (节点:17891)UnhandledPromiseRejectionWarning:TypeError:newPay.save 不是函数
- dynamics-crm - 字段是可选的,但它在门户上显示为必填项
- react-native - 反应原生 Flatlist 导航到不同的页面
- c# - 错误:启动 Windows 服务时出现“[SC] StartService FAILED 1053”
- parsing - Dart2 语法无法识别集合文字