将Backbone事件与HTML5视频播放事件结合使用

Using Backbone Events with HTML5 video playback events

本文关键字:事件 结合 播放 HTML5 Backbone 视频      更新时间:2024-06-24

我正在尝试使用主干来侦听视频何时结束,但返回了undefined is not a function

一旦视频结束,尝试从主干视图中调用另一种方法:

playIOS: function() {
    var $video = $('video'),
        video = $video.get(0);
    video.play();
    this.listenTo( video, 'ended', this.videoEnded );
},
videoEnded: function() {
    alert( 'Video Ended!' );
}

很明显,我的方法不起作用。是否有推荐的使用Backbone监控媒体播放事件的解决方案?

listenTo方法仅适用于骨干对象(ModelCollection…)和内部骨干事件(如addremove等)。尽管您可以使用自定义事件扩展该事件列表,但是它们仍然只能绑定到主干对象。

ended是一个DOM事件,因此它的侦听器应该由DOM方法(addEventListener或其jQuery等价物)绑定。在Backbone中,您可以使用View的事件哈希来实现此目的。

所以你的代码可能看起来像这样:

var MyVideo = Backbone.View.extend({
    el: '#video',
    events: {
        "ended": "videoEnded"
    },
    videoEnded: function() {
        alert( 'Video Ended!' );
    }
});

其中CCD_ 9是引用DOM中已经存在的CCD_。

简单。。

var video = document.getElementsByTagName('video')[0];
    video.onended = function(e) {
     // your method which is to be called
    };