我正在构建一个Media Manger库,它将在弹出模式窗口中打开。
Media Manger有大约20-30个插件,这些插件都有自己的第三方JavaScript库。
现在,当Media Manger被打开时,随着更多的插件被加载到Media Manger库中,所有加载到自己的第三方库中,它将消耗越来越多的浏览器资源和内存。
1) 有没有办法在需要时加载和卸载JavaScript库?
2)
如果我要更改Media Manger库Modal窗口以加载到Iframe中,当模态窗口关闭时我可以从DOM中删除它,这会释放它加载到那个Iframe中的所有第三方库和插件吗? / p>
答案 0 :(得分:0)
1)无法按需卸载特定的JavaScript库。如果您认为有必要,您应该重新考虑您的设计。但是,您可以清除localStorage,它将清除所有缓存的脚本和样式(如果它们存储在那里)和其他html5资源。
window.localStorage.clear();
2)当您清除iframe时,它确实会将其使用的资源返回给浏览器it is easily testable。但是it is recommended在删除iframe之前刷新iframe,以帮助确保正确返回所有资源。
$('iframe')[0].contentWindow.location.reload();
setTimeout(function(){
$('iframe').remove();
}, 1000);
答案 1 :(得分:0)
请注意,如果您将任何事件处理程序或任何类型的引用附加到iframe,则必须将其取消引用,以便从dom中删除时,您的iframe应符合垃圾回收条件。
对here进行了详细讨论。 (虽然这个问题涉及骨干模型,但答案一般是讨论JavaScipt垃圾收集。)