JavaScript 瀏覽器驗證代碼

來源:互聯網
上載者:User
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';
/ / option to gareth hayes (former record-holder):
var ie = !+" 1";
</ script>
<script type='text/javascript'>
alert([,]==',');
//這是8個字元判定ie
</script>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.