您的位置:首页 > 其它

解决ie6 sp2/sp3版本兼容问题

2016-05-11 08:38 260 查看
在开发的过程中,发现window.showModalDialog这种方式打开窗口的话,会出现新窗口会话丢失的情况,这个情况在ie6中sp2和sp3也有区别,在sp3中是可以session是可以传入的,但到了sp2或者sp1版本的ie6浏览器就会出现会话失效的提示。

上网查了一下,发现低版本的ie6 使用window.showModalDialog方法的时候新窗口无法将主窗口中的sessionID给传入导致的,而在sp3以及后续版本中这个问题已经解决掉了。

主要的方法是:

在使用window.showModalDialog打开新窗口的时候将window写上

window.showModalDialog(url,
window,
"下载",
"resizable:yes;
dialogHeight:1px;
dialogWidth:1px;
status=no;
scroll=yes;");


在打开的窗口中点击链接的时候先通过一个过滤的方法来跳转:

function openUrl(urlstr){
var openobj = window;
if(typeof(window.dialogArguments) == 'object'){
openobj = window.dialogArguments;
}
openobj.open(urlstr,"_blank");
}


在跳转之前先获得传入的主窗口window对象,这个方法可以统一解决ie6的这个问题。

下面是写一下通过js来获取ie6和其他的ie版本

var ua = navigator.userAgent;
if (ua.indexOf("SV1")!=-1){             //是否ie6
if(ua.indexOf("NT 5.1")!=-1){
// window xp + sp1, sp2
}else if (ua.indexOf("NT 5.2")!=-1){
// windows 2003 + sp1
}else{
//ie6的其他版本
}
}else{
//ie后续版本 ie7,ie8
}


上面第一个判断“SV1”, SV1的本意是”security version 1”,它就是用来专门标注使用ie6浏览器的用户使用的操作系统是否是window xp sp2或window server 2003 sp1

在后续的ie版本中,SV标志可能会被移除。

所以现在先是通过这个判断来判断ie6版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ie 6 浏览器