Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 VideoJS-无法销毁和初始化_Javascript_Jquery_Html_Video_Video.js - Fatal编程技术网

Javascript VideoJS-无法销毁和初始化

Javascript VideoJS-无法销毁和初始化,javascript,jquery,html,video,video.js,Javascript,Jquery,Html,Video,Video.js,在您的声明中,支持被移动到StackOverflow,所以让我们在这里尝试一下。我有以下代码: var player = _V_('the_id', {}, function(){ jQuery('.remove').on('click.destroyvideojs', function(){ player.destroy(); jQuery(this).unbind('click.destroyvideojs'); }); }); 它首先初始化

在您的声明中,支持被移动到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的重新初始化根本不起作用。此外,它现在从视频中删除了控件。

在执行回调时,似乎还没有定义
player
。 看看这把js小提琴

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)
        }
也检查这个解决方案

我从脑袋里拿出一些兔子,很难找到对这些问题的回答。。。 这是我的解决方案,使用JQuery。。。这个解决方案诞生于如何销毁未初始化的播放器对象的问题,你们这些家伙最终拯救了我的一天,因为我们只能销毁显示的播放器,即使我清除HTML并重新初始化动态播放器JS,flash后退也无法用于未初始化的媒体播放器。 因此,解决方案如下:

$.each(_V_.players, function (key, player) { 
    if (player.isReady) { player.destroy(); } 
    else { delete _V_.players[player.id]; } 
}); 
有点乱,但也可以。
干杯

如果这对任何人都有帮助,那么在版本4中它看起来像是
dispose

var player = videojs('my-video');
player.dispose();

您要查找的api引用是.dispose();但是,它不会从dom中删除设置。如果您有第三方插件,在dispose运行后,其他项目可能会丢弃您的DOM。要运行dispose并清理dom,请使用如下代码

dispose=function(){
if(settings.debug){
console.info('place.videojs_element.dispose()');
}/*以玩家元素为目标*/
var player=videojs(settings.element.id+“_player”);/*暂停视频*/

player.pause();/*等待第三方脚本停止侦听!!!查看了Video.js 5.0.0的源代码。@l:17236您可以执行以下操作:

if(videojs.getPlayers()[id]) {
    delete videojs.getPlayers()[id];
}

我也有同样的问题谢谢!我花了一段时间才找到这个问题的解决方案。dispose()方法似乎从标记中删除了视频元素!如何删除视频js播放器而不从标记中删除视频元素(这样它仍然可以通过浏览器的默认HTML5播放器播放)。这对我很有用,因为我使用的是旧版本的播放器,以获得更好的IE8支持。旧版本使用destroy(),最新版本使用dispose(),但不确定内部差异是什么。我的绝对英雄!