在VideoJS website上,您声明支持已移至StackOverflow,所以我们在此处尝试一下。我有以下代码:
var player = _V_('the_id', {}, function(){
jQuery('.remove').on('click.destroyvideojs', function(){
player.destroy();
jQuery(this).unbind('click.destroyvideojs');
});
});
它首先初始化视频并将其销毁。
但是当我想使用相同的代码片段再次初始化它时,它不起作用。它不会在相同的元素ID上初始化脚本(当它从DOM中删除时,并在添加后再次添加正确的初始化调用)。我想知道为什么会发生这种情况?
今天再试一次:
var the_id = 'my_id';
var player = _V_(the_id, {}, function(){
player.destroy();
_V_(the_id, {}, function(){
alert('reinit');
});
});
因此,重新初始化VideoJS根本不起作用。此外,它现在从视频中删除了控件。
答案 0 :(得分:21)
如果这有助于任何人,它看起来像版本4中的dispose
:
var player = videojs('my-video');
player.dispose();
答案 1 :(得分:5)
查看了Video.js 5.0.0的源代码。 @l:17236您可以执行以下操作:
if(videojs.getPlayers()[id]) {
delete videojs.getPlayers()[id];
}
答案 2 :(得分: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)
}
也检查这个解决方案 http://help.videojs.com/discussions/problems/861-how-to-destroy-a-video-js-object#comment_13544514
答案 3 :(得分:0)
我从我的头上拉了一些我的野兔,很难在这些问题之前找到答案...... 所以这是我的解决方案,使用JQuery ......解决方案诞生于如何破坏未初始化的玩家对象的问题,你们最终节省了我的一天,因为我们只能摧毁所显示的玩家,即使我清理了HTML和重新初始化动态播放器闪回后退将不适用于未经展示的未被破坏的媒体播放器。 所以这是解决方案:
$.each(_V_.players, function (key, player) {
if (player.isReady) { player.destroy(); }
else { delete _V_.players[player.id]; }
});
有点乱,但会做得很好。
干杯!
答案 4 :(得分:0)
你要找的api引用是.dispose();但它不会从dom中删除设置。如果您有第三方插件,其他项目可能会在处置后运行您的DOM。要运行dispose并清理你的dom,请使用像这样的代码
6500 * 350 = 2275000
}`
查看实际操作示例:http://codepen.io/JaminQuimby/pen/yNaOwz/
以上将为您提供干净的DOM并完全删除视频播放器。