Javascript 跟踪观看的%视频不工作(timeupdate&vimeo)。为什么?
通过谷歌搜索,我找到了下面的代码来跟踪观看视频的播放、结束和视频进度%。我用来输入 游戏和结束工作。当观看10%的视频时,TIMEUPDATE也起作用,但console.log不起作用。我不知道我做错了什么 视频测试vimeo var iframe=document.querySelector'iframe'; var player=新的Vimeo.Playeriframe; 播放器。关于“播放”,函数{ console.log“播放视频!”; }; 播放器。在“结束”功能上{ console.log“视频结束!”; }; player.on'timeupdate',functiondata{ log'Percentage wasted:'+data.percent; 如果data.percent==0.1{ 控制台。记录“观看视频的10%”; } };Javascript 跟踪观看的%视频不工作(timeupdate&vimeo)。为什么?,javascript,vimeo,Javascript,Vimeo,通过谷歌搜索,我找到了下面的代码来跟踪观看视频的播放、结束和视频进度%。我用来输入 游戏和结束工作。当观看10%的视频时,TIMEUPDATE也起作用,但console.log不起作用。我不知道我做错了什么 视频测试vimeo var iframe=document.querySelector'iframe'; var player=新的Vimeo.Playeriframe; 播放器。关于“播放”,函数{ console.log“播放视频!”; }; 播放器。在“结束”功能上{ console
@Marten Hoekstra不确定你是否解决了这个问题,但为了子孙后代,我会给你一个完整的答案: 如果运行代码,您将在控制台中看到:
Percentage watched: 0.097
Percentage watched: 0.101
Percentage watched: 0.105
但是,如果data.percent==0.1,当百分比正好为0.1时,代码行将尝试打印。这种情况并不明显。这是因为时间更新事件的性质,您可以在此处阅读:。上面说:
事件频率取决于系统负载,但如果事件处理程序的运行时间不超过250ms,则会在大约4Hz到66Hz之间抛出
这意味着,尽管事件发生得非常频繁,但不足以确保该值恰好为10%。因此,您应该在if语句中添加某种容差,这样您就不会依赖于精确的值。这可能类似于:
const TOLERANCE = 0.002
...
if (data.percent >= (0.1 - TOLERANCE) && data.percent <= (0.1 + TOLERANCE))
@Marten Hoekstra不确定你是否解决了这个问题,但为了子孙后代,我会给你一个完整的答案: 如果运行代码,您将在控制台中看到:
Percentage watched: 0.097
Percentage watched: 0.101
Percentage watched: 0.105
但是,如果data.percent==0.1,当百分比正好为0.1时,代码行将尝试打印。这种情况并不明显。这是因为时间更新事件的性质,您可以在此处阅读:。上面说:
事件频率取决于系统负载,但如果事件处理程序的运行时间不超过250ms,则会在大约4Hz到66Hz之间抛出
这意味着,尽管事件发生得非常频繁,但不足以确保该值恰好为10%。因此,您应该在if语句中添加某种容差,这样您就不会依赖于精确的值。这可能类似于:
const TOLERANCE = 0.002
...
if (data.percent >= (0.1 - TOLERANCE) && data.percent <= (0.1 + TOLERANCE))
对不起,来得太晚了,但我还是找到了另一条路
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>video-test-vimeo</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
var iframe = jQuery('.your_turn_vimeo_video iframe');
var vimeoPlayer = new Vimeo.Player(iframe);
setInterval(function () {
vimeoPlayer.getCurrentTime().then(function(seconds) {
console.log( seconds, "current seconds " );
});
//console.log('it works' + new Date());
},1000);
</script>
这将每秒获取一次CurrentTime。因此,您可以作为timeupdate工作
我希望这也能帮助其他用户。谢谢:很抱歉来得太晚了,不过我还是找到了另一种方法
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>video-test-vimeo</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
var iframe = jQuery('.your_turn_vimeo_video iframe');
var vimeoPlayer = new Vimeo.Player(iframe);
setInterval(function () {
vimeoPlayer.getCurrentTime().then(function(seconds) {
console.log( seconds, "current seconds " );
});
//console.log('it works' + new Date());
},1000);
</script>
这将每秒获取一次CurrentTime。因此,您可以作为timeupdate工作
我希望这也能帮助其他用户。谢谢: