2012-02-24 40 views
3

我正在嘗試在backbone.js網站中使用mediaelement.js播放器,並且我在進出各種路由時手動刪除視頻/音頻播放器時遇到問題我已經成立了。手動清除或刪除mediaelement.js播放器

比方說,我的網頁上有兩個視頻。當我從這個網頁搬走,這兩部影片仍然被保存在內存中:

> mejs.players 
> [object, object] 

當我回到頁面,原來的兩個視頻仍然在內存和一個額外的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'函數。我不知道這個插件是如何工作的,所以這可能是你看到你所看到的行爲的原因。 – 2012-02-24 04:57:42

+0

我認爲你是對的。我不太熟悉關於內存管理的最佳實踐,但是當我在清空數組之後在路由之間移動時,它仍然是空的,這意味着什麼。 :) 謝謝! – 2012-02-24 07:56:08

回答

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 = [];

}