废话不多说,现在需要一个程序能够关闭IE5,6,7,8和谷歌火狐的方法其主要目的是为了兼容性考虑;
window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,通过这个属性来判断浏览器类型,下面是我写的一个函数,这个函数返回一个包含浏览器名称和版本的数组。
此函数可区分ie5.5~ie8、Chrome、Opera、Safair、Firefox这5种常见浏览器。为了版本兼容性考虑先写出这个函数;
var browse=browser();
function browser (){
var ua=window.navigator.userAgent,
ret="";
if(/Firefox/g.test(ua)){
ua=ua.split(" ");
ret="Firefox|"+ua[ua.length-1].split("/")[1];
}else if(/MSIE/g.test(ua)){
ua=ua.split(";");
ret="IE|"+ua[1].split(" ")[2];
}else if(/Opera/g.test(ua)){
ua=ua.split(" ");
ret="Opera|"+ua[ua.length-1].split("/")[1];
}else if(/Chrome/g.test(ua)){
ua=ua.split(" ");
ret="Chrome|"+ua[ua.length-2].split("/")[1];
}else if(/^apple\s+/i.test(navigator.vendor)){
ua=ua.split(" ");
ret="Safair|"+ua[ua.length-2].split("/")[1];
}else{
ret="未知浏览器";
}
return ret.split("|");
}
页面上写一个简单的关闭元素
<a href="javascript:closewin();">关闭窗口</a>
下面到我们的重头戏了,关闭窗口的代码来了
function closewin(){
var browserName=navigator.appName; //获取浏览器名称
alert(browserName);
if (browserName=="Netscape") { //兼容火狐谷歌
var opened=window.open('about:blank','_self');
opened.opener=null;
opened.close();
}else if(browserName=="Microsoft Internet Explorer"){ //兼容IE
if(browse[1]<=6.0){
window.opener=null;
window.close();
}
if(browse[1]==7.0){
window.open('','_top');
window.top.close();
}
if(browse[1]>7.0){
window.opener=null;
window.open('','_self');
window.close();
}
}
}
这里要说一下 browserName=navigator.appName; //获取浏览器名称这里为什么谷歌的也是Netscape,这里主要是为了W3c的规范,也有人说是为了怀恋一下Netscape这个公司比较他们对浏览器做出了很大的贡献;
附录:
refox下无法关闭可能原因:
不是JS代码window.close()的问题,而是Firefox的配置问题,解决方法如下:
在Firefox地址栏里输入 about:config
在配置列表中找到 dom.allow_scripts_to_close_windows
点右键的选切换把上面的false修改为true即可。
注:默认是false,是为了防止脚本乱关窗口
另附代码:
window.opener = null;//为了不出现提示框
window.close();//关闭窗口