⑴ js判断是否是IE浏览器的几种方法
前几天在网上看到一个技术牛人写的世界上判断是否IE浏览器之最短的js代码,如下:<scriptif(!+[1,])alert(这是ie浏览器);
else alert(这不是ie浏览器);
</script
其实有很多判断的方法,大都是根据浏览器的特性来的。
比如库prototype的方法是:!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) 。就是根据ie支持window.attachEvent添加侦听事件,非ie用window.addEventListener添加侦听事件来判断的。navigator.userAgent.indexOf('Opera') === -1是因为opara浏览器能伪装成ie.如果!!(window.attachEvent )为真,就是ie;反之,如果!window.addEventListener为真,也可以判断为ie.
Ext使用的是!1[0],他利用IE无法使用数组下标访问字符串的特性来判断。在ie8下好像有问题。
在!+[1,]还未被发现前,判断ie最短的表达式是 !+\v1.它利用的是ie不支持垂直制表符的特性。
以前还有一个常用方法是document.all,由于opera浏览器能伪装成ie。可以这样写:!!(document.all && navigator.userAgent.indexOf('Opera') === -1).
还有很多,先记这几条,便于工作时查阅。
1.+[1,]
2.!+\v1
3.!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1)
4.!!(!window.addEventListener&& navigator.userAgent.indexOf('Opera') === -1)
5.!!(document.all && navigator.userAgent.indexOf('Opera') === -1)
⑵ JS捕获关闭浏览器事件之chrome浏览器真支持onbeforeunload事件吗
这个谷歌浏览器是支持的,不过你要注意不要试图用addEventListener或attachEvent绑定这两个事件,浏览器不兼容。
代码如下:
window.onbeforeunload = function()
{
return false;
}
不过这个浏览器不怎么兼容国内的网站,建议换个同样可以支持这个事件的浏览器。
⑶ js区分浏览器页面是刷新还是关闭
页面加载时只执行onload
页面关闭时只执行onunload
页面刷新时先执行onbeforeunload,然后onunload,最后onload。
经过验证我得出的结论是:
//对于ie,谷歌,360:
//页面加载时只执行onload
//页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面时onunload事件,最后onload事件。
//页面关闭时,先onbeforeunload事件,再onunload事件。
//对于火狐:
//页面刷新时,只执行onunload;页面关闭时,只执行onbeforeunload事件
那么回归正题,到底怎样判断浏览器是关闭还是刷新?我按照网上的各种说法实验千百遍,都未成功,其中各种说法如下:
window.onbeforeunload=function()//author:meizz
{
varn=window.event.screenX-window.screenLeft;
varb=n>document.documentElement.scrollWidth-20;
if(b&&window.event.clientY<0||window.event.altKey)
{
alert("是关闭而非刷新");
window.event.returnValue="";//这里可以放置你想做的操作代码
}else
{
alert("是刷新而非关闭");
}
}
window.onbeforeunload=function()//author:meizz
{
varn=window.event.screenX-window.screenLeft;
varb=n>document.documentElement.scrollWidth-20;
if(b&&window.event.clientY<0||window.event.altKey)
{
alert("是关闭而非刷新");
window.event.returnValue="";//这里可以放置你想做的操作代码
}else
{
alert("是刷新而非关闭");
}
}
⑷ js怎么写提示用户升级浏览器的代码
判断当前浏览器的版本,如果是IE较低版本,就跳转到一个提示浏览器升级的页面专。
直接用js体验不好,属也不好看。
具体的代码
if((!to3d())||document.documentMode==10||document.documentMode==11)
{
window.location="../error.html";
}
这段代码检测了浏览器是不是支持3d这个属性,然后检测了是不是IE10和IE11。然后跳转到另外一个网页。你也可以直接简单粗暴的document.documentMode <11,就可以屏蔽版本低于IE11的浏览器了。
不用担心其他的如FireFox或者Chrome,因为这段代码在这两个浏览器下是没有这个属性的。