一个页面中使用多个iframe导致在ie中假死问题的解决方法
2016-01-19 10:17
981 查看
在我做web前端开发的时候遇到这样的情况,就是有需求是一个页面里放入多个iframe,点击tab进行跳转不同的iframe,通过iframe的隐藏和显示来实现,后来发现在谷歌等其他浏览器中是可以的,但是在ie中就会产生假死的状态,就只有一个页面显示正常,其他的页面都是空白,后来网上查了很多关于ie假死的问题,有说是jquery导致的,也有说是ie内存溢出导致,在几个iframe页面同时加载的时候ie不知道到底是否什么时候页面加载完成,因此会出现假死的状态。
这是我后来用的方法,定义了全局变量对应项对应的iframe,当第一次点击对应的tab时,对应的iframe加载出来,然后对应的变量递增,做判断如果是第一次点击就加载iframe,不是第一次点击就不做操作,就模拟了多个iframe的效果
function setUrl(iframe, url) {
var el = document.getElementById(iframe),
iframe = el.contentWindow;
if (el) {
el.src = 'about:blank';
try {
iframe.document.write('');
iframe.document.clear();
} catch (e) { };
//以上可以清除大部分的内存和文档节点记录数了
}
el.src = url;
}
var h = 0; //ie使用iframe时会导致页面假死,因此需要点击次数来模拟出iframe的效果
var j = 0;
var k = 0;
//根据参数不同跳转不同页面
function changeTab(typeNum) {
var iframe = "showIframe" + typeNum;
var url = window.webSiteRootUrl;
var data = {
ticket: $.page.ticket,
basEntId: fw.fwCookie.FWCookieHelper("basEntId"),
entId: $.page.params.entId,
hisEntId: $.page.params.hisEntId
};
var params = fw.fwUrl.FWUrlHelper.param(data);
for (var i = 1; i < 6; i++) {
if (typeNum == i) {
$("#showIframe" + typeNum).show();
// setUrl('showIframe' + typeNum,);
} else {
$("#showIframe" + i).hide();
};
};
switch (typeNum) {
case '2':
url += 'web/ent/insertEnt/entProduct.htm?' + params;
if (h == 0) {
setUrl(iframe, url);
};
h++;
break;
case '3':
url += 'web/ent/insertEnt/entGuardInfo.htm?' + params;
if (j == 0) {
setUrl(iframe, url);
};
j++;
break;
case '4':
url += 'web/ent/insertEnt/entEmergency.htm?' + params;
if (k == 0) {
setUrl(iframe, url);
};
k++;
break;
};
};
这是我后来用的方法,定义了全局变量对应项对应的iframe,当第一次点击对应的tab时,对应的iframe加载出来,然后对应的变量递增,做判断如果是第一次点击就加载iframe,不是第一次点击就不做操作,就模拟了多个iframe的效果
function setUrl(iframe, url) {
var el = document.getElementById(iframe),
iframe = el.contentWindow;
if (el) {
el.src = 'about:blank';
try {
iframe.document.write('');
iframe.document.clear();
} catch (e) { };
//以上可以清除大部分的内存和文档节点记录数了
}
el.src = url;
}
var h = 0; //ie使用iframe时会导致页面假死,因此需要点击次数来模拟出iframe的效果
var j = 0;
var k = 0;
//根据参数不同跳转不同页面
function changeTab(typeNum) {
var iframe = "showIframe" + typeNum;
var url = window.webSiteRootUrl;
var data = {
ticket: $.page.ticket,
basEntId: fw.fwCookie.FWCookieHelper("basEntId"),
entId: $.page.params.entId,
hisEntId: $.page.params.hisEntId
};
var params = fw.fwUrl.FWUrlHelper.param(data);
for (var i = 1; i < 6; i++) {
if (typeNum == i) {
$("#showIframe" + typeNum).show();
// setUrl('showIframe' + typeNum,);
} else {
$("#showIframe" + i).hide();
};
};
switch (typeNum) {
case '2':
url += 'web/ent/insertEnt/entProduct.htm?' + params;
if (h == 0) {
setUrl(iframe, url);
};
h++;
break;
case '3':
url += 'web/ent/insertEnt/entGuardInfo.htm?' + params;
if (j == 0) {
setUrl(iframe, url);
};
j++;
break;
case '4':
url += 'web/ent/insertEnt/entEmergency.htm?' + params;
if (k == 0) {
setUrl(iframe, url);
};
k++;
break;
};
};
相关文章推荐
- iOS 定义静态常量和宏定义的写法
- 使用PropertyPlaceholderConfigurer读取.properties文件(3)-公共类获取属性
- 【百金轻】:“回归玩家”正式入市 国际市场能否HOLD住
- Android Studio 操作基础
- ubuntu13.04环境hadoop1.2.1单机模式安装
- 使用Retrofit请求API数据-codepath教程
- URAL 1728. Curse on Team.GOV(STL set)
- tomcat7配置manage app界面
- 多个ajax请求下等待条显示和隐藏的简单处理
- 关于scrollbar-face-color只支持ie的解决办法!
- CSS常用属性之段落
- Function Module for Clearing Accounting Documents (FB05)
- 判断服务运行状态
- Android XListView实现原理讲解及分析
- Android:Moring-早安闹钟开发过程记录(二)
- 轻量级J2EE持久层解决方案,MiniDao-PE版 1.5.4【版本发布】
- doctrine2简要教程
- 北京Uber优步司机奖励政策(1月19日)
- iOS:Xcode中SVN不能提交CocoaPods中的.a文件的解决方法
- my.cnf