Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跟踪观看的%视频不工作(timeupdate&vimeo)。为什么?_Javascript_Vimeo - Fatal编程技术网

Javascript 跟踪观看的%视频不工作(timeupdate&vimeo)。为什么?

Javascript 跟踪观看的%视频不工作(timeupdate&vimeo)。为什么?,javascript,vimeo,Javascript,Vimeo,通过谷歌搜索,我找到了下面的代码来跟踪观看视频的播放、结束和视频进度%。我用来输入 游戏和结束工作。当观看10%的视频时,TIMEUPDATE也起作用,但console.log不起作用。我不知道我做错了什么 视频测试vimeo var iframe=document.querySelector'iframe'; var player=新的Vimeo.Playeriframe; 播放器。关于“播放”,函数{ console.log“播放视频!”; }; 播放器。在“结束”功能上{ console

通过谷歌搜索,我找到了下面的代码来跟踪观看视频的播放、结束和视频进度%。我用来输入

游戏和结束工作。当观看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%”; } };
@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工作

我希望这也能帮助其他用户。谢谢: