当前位置:编程学习 > JS >>

JavaScript 浏览器验证代码

我们这里了最全的网页特效 浏览器验证代码也提供了最精短的浏览器验证代码,下面来看看我们利用ie bug来实例的世界上最短浏览判决代码吧。

var browser = {};
var useragent = navigator.useragent.tolowercase();
alert(useragent);
browser.ie = window.activexobject && useragent.indexof('msie') != -1 && useragent.substr(useragent.indexof('msie') + 5, 3);
browser.firefox = document.getboxobjectfor && useragent.indexof('firefox') != -1 && useragent.substr(useragent.indexof('firefox') + 8, 3);
browser.chrome = window.messageevent && !document.getboxobjectfor && useragent.indexof('chrome') != -1 && useragent.substr(useragent.indexof('chrome') + 7, 10);
browser.opera = window.opera && opera.version();
browser.safari = window.opendatabase && useragent.indexof('safari') != -1 && useragent.substr(useragent.indexof('safari') + 7, 8);
browser.other = !browser.ie && !browser.firefox && !browser.chrome && !browser.opera && !browser.safari;
browser.firefox = browser.chrome ? 1 : browser.firefox;

其它更精短验证代码

利用基于 ie 的 bug

<script type='text/网页特效'>
var ie = !-[1,];
alert(ie);
</script>

以上浏览器验证代码运行结果:ie 下返回true,其他标准浏览器返回false。!-[1,],仅仅只有 6 bytes!
不过如果反过来判断,标准浏览器返回 true 而 ie 返回 false的话,则可以再缩短一个byte

<script type='text/javascript'>
notie = -[1,];
if(-[1,]){
// 标准浏览器代码
}else{
// ie only的代码
}
</script>


产生的原因是 ie 会添加一个空数组元素到数组元素的总数里。
[1,]. length标准浏览器会返回 1 (基于标准的 ecmascript ,在数组最后的逗号”,”会被忽略,这是为了方便在一列里显示以及自动生成等),但是 ie 会返回 2。当你打印这个数组的时候 ie 将会返回 “1, “,也就是两个元素,而其他标准浏览器将会返回 “1′。

<script type='text/javascript'>
// option from dean edwards:
var ie = /*@cc_on!@*/false;
// use the commented line:
var ie//@cc_on=1;
// variation (shorter variable):
var ie = 'v'=='v';
/ / option to gareth hayes (former record-holder):
var ie = !+"v1";
</ script>
<script type='text/javascript'>
alert([,]==',');
//这是8个字符判定ie
</script>
补充:网页制作,js教程 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,