【问题标题】:Froogaloop 'finish' event is also firing a 'pause' eventFroogaloop 'finish' 事件也触发了 'pause' 事件
【发布时间】:2016-01-28 21:54:42
【问题描述】:

在我的页面初始化脚本中,我有以下代码:

var iframe = document.getElementById('video');
var player = Froogaloop(iframe);
player.addEvent('ready', function() {
    player.addEvent('play', function() {
        console.log('Played video');
    });
    player.addEvent('pause', function() {
        console.log('Paused video');
    });
    player.addEvent('finish', function() {
        console.log('Finished video');
    });
});
<script src="//f.vimeocdn.com/js/froogaloop2.min.js"></script>
<iframe id="video" src="//player.vimeo.com/video/132283541?title=0&amp;byline=0&amp;portrait=0&amp;color=e00400&amp;api=1&amp;player_id=video" width="200" height="150" frameborder="0" crossorigin="anonymous" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>

视频结束后,我会同时收到一份暂停事件报告和一份结束事件报告。有谁知道这是为什么?如果我的代码没有问题,是否有解决方法,使用超时或类似的方法?

【问题讨论】:

    标签: javascript vimeo-api froogaloop


    【解决方案1】:

    我把js sn-p改成如下:

    var iframe = document.getElementById('video');
    var player = Froogaloop(iframe);
    player.addEvent('ready', function() {
        var pauseEvent = null;
        var finishEvent = null;
        player.addEvent('play', function() {
            console.log('Played video');
            pauseEvent = null;
            finishEvent = null;
        });
        player.addEvent('pause', function() {
            pauseEvent = setTimeout( function() {
                console.log('Paused video');
            }, 5);
            if (finishEvent) {
                clearTimeout(pauseEvent);
            }
        });
        player.addEvent('finish', function() {
            finishEvent = setTimeout( function() {
                console.log('Finished video');
            }, 5);
            if (pauseEvent) {
                clearTimeout(pauseEvent);
            };
        });
    });
    

    这行得通,尽管我认为人们可以看到它有点令人费解。有两个 clearTimeout 调用,因为我们无法确定报告“完成”和(虚假)“暂停”的顺序是否与检测它们的顺序相同。

    虽然我希望这对其他人有所帮助,但我确信这不是这个神秘问题的最终定论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-11
      • 2010-10-19
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2014-08-02
      • 1970-01-01
      相关资源
      最近更新 更多