我在一个动态创建和丢弃视频播放器的界面中使用video.js,但我一次只能显示最多1个玩家。理想情况下,我想找到一种方法来干净地清理swf视频播放器,而不是重构一个重用一个播放器的解决方案。
我在IE8中看到内存泄漏(当使用flash播放器时)。在“丢弃”每个新播放器之后,IE使用的存储器保持不变,并且在“创建”每个新播放器之后,存储器使用量增加。 Firefox中的相同实现(使用Flash播放器)不会导致内存泄漏,因此问题很可能归因于IE8。
在删除播放器/视频之前,我设置player.src('')
并调用player.destroy()
来删除事件绑定和触发器等。
我也尝试过使用swfobject.removeSwf()
,因为它会进行一些额外的拆解以避免IE中的内存泄漏(将swf对象的每个函数属性设置为null)。
if(player.techName == 'flash'){
player.src('');
swfobject.removeSwf(playerID); // some attempt to leverage swfobject
player.destroy();
$(player.el).remove();
}
我能找到其他有同样问题的人最接近的是: http://help.videojs.com/discussions/problems/861-how-to-destroy-a-video-js-object#comment_14896105 它没有得到答复。
非常感谢任何帮助或潜在客户。谢谢!