2013-02-11 19 views
9

VideoJS websiteで、そのサポートがStackOverflowに移動されたので、ここで試してみましょう。私は次のコードを持っています:VideoJS - 破棄して初期化できません

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

私は同じ問題があります – dinodsaurus

答えて

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

0

どのように見えるか、私はそうここに...そのような質問フォア応答を見つけることは非常に難しい、私の頭から を私のウサギのいくつかを引っ張っ私のソリューションですJQueryを使って...解決策は、初期化されていないプレーヤーオブジェクトをどのように破壊するかという質問から生まれました。皆さんは私の一日を終わらせました。私たちは、表示されているプレイヤーだけを破壊することができます。フラッシュバックはunshowed undestroyedメディアプレーヤーでは機能しません。 はので、ここでのソリューションです:

$.each(_V_.players, function (key, player) { 
    if (player.isReady) { player.destroy(); } 
    else { delete _V_.players[player.id]; } 
}); 

少し汚いけどうまくやるだろう。 よろしく!場合

20

これは、それはバージョン4でdisposeだように見える、誰にも役立ちます

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

ありがとう!この問題を解決するにはしばらく時間がかかりました。 – Soska

+2

dispose()メソッドは、マークアップからビデオ要素を削除するようです!マークアップからビデオ要素を削除せずにvideo-jsプレーヤーを削除するには(ブラウザーのデフォルトのHTML5プレーヤーで再生できるように) – smohadjer

+0

これは私がIE8のより良いサポートのために古いバージョンのプレーヤーになっているので、私にとってはうまくいっています。古いバージョンではdestroy()を使用していますが、最新のバージョンではdispose()が使用されていますが、内部的な違いはわかりません。 – danjah

0

APIリファレンスあなたが探しは(.disposeです)。ただし、DOMからの設定は削除されません。サードパーティ製のプラグインを使用している場合は、処分を実行した後に他のアイテムがDOMを落とす可能性があります。以下のようなコードを使用して処分実行し、DOMをクリーンアップするには、この

`dispose = function() { 
if (settings.debug) { 
    console.info('place.videojs_element.dispose()'); 
} /*Target the Player Element*/ 
var player = videojs(settings.element.id + '_player'); /*Pause Video*/ 
player.pause(); /*Wait for third party scripts to stop listening!!! <-- Important*/ 
setTimeout(function() { /*Dispose of the player*/ 
    player.dispose(); 
    /*I have a new video element waiting to be placed (this code is proprietary)*/ 
    var epi = new EPI(); 
    epi.place.videojs_element(settings, data); /*Wait time 600ms*/ 
}, 600); /*Destroy the old video element <--- Important */ 
$('#' + settings.element.id).empty(); 

} `

アクションで作業例を参照してください:http://codepen.io/JaminQuimby/pen/yNaOwz/

は、上記のあなたのきれいなDOMを与えるだろうし、完全に削除しますビデオプレーヤー。

5

Video.js 5.0.0のソースを確認しました。 @l:17236次のようにしてください:

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

私の絶対的なヒーロー! –

関連する問題