2012-02-24 7 views
3

backbone.jsサイトでmediaelement.jsプレーヤーを使用しようとしていますが、さまざまなルートに移動したときにビデオ/オーディオプレーヤーを手動で取り外すことができません私はセットアップしました。mediaelement.jsプレーヤーを手動で消去または削除する

私のページに2つの動画があるとします。私はこのページから移動すると、これら2つのビデオはまだメモリに保存されています。私は、ページに戻ったら

> mejs.players 
> [object, object] 

は、元の2本の動画がメモリに残っていると、追加の2つのビデオは選手オブジェクトに追加されます:

> mejs.players 
> [object, object, object, object] 

は、実際には、私は、ページを残して、すべての時間を返し、さらに2人の選手がmejs.playersオブジェクトに追加されます。

すべてのプレーヤーを手動でクリア/削除する方法はありますか?

私は次のことを試してみた:

mejs.players[0].remove() 

これは、HTML5のビデオプレーヤーを残して、ページからプレーヤーのコントロールを削除しているようです。しかし、mejs.playersにチェックを入れても、プレイヤーは引き続き存続します。私は間違っている可能性がありますが、これはパフォーマンスにとって最適ではないようです。

+0

'mejs.players'を' [] 'に設定しようとしましたか? (配列のリセットとも呼ばれる) 'mejs.players [0] .remove()'を呼び出すと、実際にMediaElement自身の 'remove'関数を最初のプレーヤーで呼び出すことになります。そのプラグインがどのように動作するのかわからないので、あなたが見ている動作を見ているのかもしれません。 –

+0

私はあなたが正しいと思います。私はあまりメモリ管理に関するベストプラクティスに精通していませんが、配列を空にした後にルート間を移動すると空のままになり、何かを意味するはずです。 :)ありがとう! –

答えて

2

これは(UnderscoreJSを持っている)バックボーンサイトにあるので、これは動作します、あなたは(_.keysを使用することができます)の代わりにObject.keysの()

if (mejs) { 
    var players = _.keys(mejs.players); 
    _.each(players, function(player) { 
     mejs.players[player].remove(); 
    }); 
} 
0

最初mejs.playersを削除して作成します新しいmejs.playersアレイ

(mejs){

はmejs.playersを削除します。

mejs.players = [];

関連する問題