多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
#### 1、问题描述 切换左边导航,动态改变右边的iframe的src属性,来展示不同的页面内容。当反复切换30次左右时候,IE11下发生白屏现象。 实现代码如下: ``` //nav <div> <a href="switch('yyy.html')"></a> <a href="switch('zzz.html')"></a> </div> //iframe <div id='content'> <iframe id='iframeId' src='xxx.html'></iframe> <div>隐藏/显示导航</div> </div> //js function switchUrl(url) { document.getElementById('iframeId').src = url; } ``` #### 2、问题原因 多次切换iframe引起IE内存泄漏。 #### 3、解决方案 多次切换iframe引起IE浏览器内存泄漏,最主要的原因是切换iframe的src后,IE浏览器都没有将原来的iframe所占的内存释放掉,反复切换导致内存不断上涨,直到内存泄漏,浏览器白屏为止。所以,在没次切换之前,应该将上一个iframe手动清除掉。 针对上面的代码,只需动态创建iframe,然后修改switchUrl方法即可。 ``` function switch(url) { var frame = $('#iframeId'); if(frame && frame[0]) { frame[0].contentWindow.document.write(''); frame[0].contentWindow.close(); frame.remove(); } $('#content').html('<iframe src="' + url + '"></iframe>'); } ```