手动清除或删除mediaelement.js播放器

3
我正在尝试在backbone.js网站中使用mediaelement.js播放器,但是当我进入和退出不同的路由时手动删除视频/音频播放器时遇到了问题。
假设我在页面上有两个视频。当我离开此页面时,这两个视频仍然保存在内存中:
> mejs.players
> [object, object]

当我返回该页面时,原本的两个视频仍然保存在内存中,并且另外添加了2个视频到播放器对象中:

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

实际上,每次我离开页面然后返回,mejs.players对象就会新增2个播放器。

有没有一种方法可以手动清除/删除所有的播放器?

我尝试了以下方法:

mejs.players[0].remove()

这似乎是从页面中删除了播放器控件,只留下了HTML5视频播放器。但是,当我检查mejs.players时,播放器仍然存在。我可能错了,但这似乎对性能不是最优的。


你尝试过将mejs.players设置为[]吗?(即重置数组)当你调用mejs.players[0].remove()时,实际上是在第一个播放器上调用MediaElement自己的remove函数。我不知道那个插件是如何工作的,所以这可能就是你看到的行为原因。 - Josh Leitzel
我认为你说得对。我不太熟悉内存管理方面的最佳实践,但在清空数组后移动路由时,它仍然保持为空,这意味着什么。:)谢谢! - Josh Greco
2个回答

2

由于这是针对Backbone网站(具有UnderscoreJS)的,因此可以使用_.keys()代替Object.keys()

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

0

首先删除 mejs.players 并创建新的 mejs.players 数组

if (mejs) {

删除 mejs.players;

mejs.players = [];

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接