VideoJS - 无法破坏和初始化

Ata*_*adj 9 javascript video jquery html5 video.js

VideoJS网站上,您声明支持已移至StackOverflow,所以让我们在这里试一试.我有以下代码:

var player = _V_('the_id', {}, function(){
    jQuery('.remove').on('click.destroyvideojs', function(){
        player.destroy();
        jQuery(this).unbind('click.destroyvideojs');
    });
});
Run Code Online (Sandbox Code Playgroud)

它首先初始化视频并将其销毁.

但是,当我想使用相同的代码片段再次初始化它时,它不起作用.它不会在相同的元素ID上初始化脚本(当它从DOM中删除时,并在添加后再次添加正确的初始化调用).我想知道为什么会发生这种情况?

今天再试一次:

var the_id = 'my_id';
var player = _V_(the_id, {}, function(){        
    player.destroy();
    _V_(the_id, {}, function(){
        alert('reinit');
    });
});
Run Code Online (Sandbox Code Playgroud)

因此,重新初始化VideoJS根本不起作用.此外,它现在从视频中删除了控件.

man*_*ire 23

如果这有助于任何人,它看起来像是dispose在版本4中:

var player = videojs('my-video');
player.dispose();
Run Code Online (Sandbox Code Playgroud)

  • dispose()方法似乎从标记中删除视频元素!如何在不从标记中删除视频元素的情况下删除video-js播放器(因此它仍然可以通过浏览器的默认HTML5播放器播放). (6认同)

小智 5

看了Video.js 5.0.0的源代码.@l:17236您可以执行以下操作:

if(videojs.getPlayers()[id]) {
    delete videojs.getPlayers()[id];
}
Run Code Online (Sandbox Code Playgroud)


Gab*_*vel 0

player回调执行时似乎还没有定义。看看这个js小提琴http://jsfiddle.net/gaboesquivel/BA8Pm/

destroy(); 对我有用。这个函数是这样的

destroy: function () {
            this.stopTrackingProgress();
            this.stopTrackingCurrentTime();
            _V_.players[this.id] = null;
            delete _V_.players[this.id];
            this.tech.destroy();
            this.el.parentNode.removeChild(this.el)
        }
Run Code Online (Sandbox Code Playgroud)

也检查这个解决方案 http://help.videojs.com/discussions/problems/861-how-to-destroy-a-video-js-object#comment_13544514