从DOM中删除Iframe会释放它在浏览器中消耗的所有资源吗?

时间:2017-02-17 03:08:16

标签: javascript iframe

我正在构建一个Media Manger库,它将在弹出模式窗口中打开。

Media Manger有大约20-30个插件,这些插件都有自己的第三方JavaScript库。

现在,当Media Manger被打开时,随着更多的插件被加载到Media Manger库中,所有加载到自己的第三方库中,它将消耗越来越多的浏览器资源和内存。

1) 有没有办法在需要时加载和卸载JavaScript库?

2)
如果我要更改Media Manger库Modal窗口以加载到Iframe中,当模态窗口关闭时我可以从DOM中删除它,这会释放它加载到那个Iframe中的所有第三方库和插件吗? / p>

2 个答案:

答案 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垃圾收集。)