JavaScript中一個(gè)奇葩的IE瀏覽器判斷方法
更新時(shí)間:2014年04月16日 09:10:44 作者:
在寫原生的Javascript的時(shí)候,因?yàn)镮E的JS引擎與標(biāo)準(zhǔn)瀏覽器的JS引擎之間總有那么些差異,所以經(jīng)常會(huì)去判斷是否是IE瀏覽器
記得在網(wǎng)上Down的很多源碼用的最多的一種方式就是:
這是因?yàn)镮E瀏覽器的document下有all方法,而所謂的標(biāo)準(zhǔn)瀏覽器卻沒有,所以很長的一段時(shí)間,這個(gè)是一種非常普遍的方法。
在之后大家開始追求起簡短,就像在這之后一度流行的一種方法:
這個(gè)是利用IE不支持垂直制表符的特性而判別的,僅僅7個(gè)字符已經(jīng)很讓人震驚了,可是這個(gè)記錄被一個(gè)俄國人在今年早些的時(shí)候打破了,人家只需要6個(gè)字符就可以搞定了。
我們暫且不討論這一個(gè)字符能夠做什么,但把它看作是一種研究,或者你說他是閑的那啥痛也行(吐槽~)。
其實(shí)它的原理很簡單,[1,]在標(biāo)準(zhǔn)瀏覽器會(huì)返回字符串"1",相當(dāng)于調(diào)用[1,].toString,IE則返回"1,"。但是這樣IE與標(biāo)準(zhǔn)都會(huì)通過檢測,因此使用負(fù)號(hào)強(qiáng)制轉(zhuǎn)換為數(shù)字,標(biāo)準(zhǔn)能成功轉(zhuǎn)換為1,1會(huì)在if中自動(dòng)轉(zhuǎn)換為true,而IE則轉(zhuǎn)換為NaN,再自動(dòng)轉(zhuǎn)換為false!查看DEMO。
很簡單對(duì)吧?肯定會(huì)有很多人跟我一樣在想,我怎么就沒想到呢?是啊,我怎么就沒想到呢?(笑~)
復(fù)制代碼 代碼如下:
var ie = document.all();
這是因?yàn)镮E瀏覽器的document下有all方法,而所謂的標(biāo)準(zhǔn)瀏覽器卻沒有,所以很長的一段時(shí)間,這個(gè)是一種非常普遍的方法。
在之后大家開始追求起簡短,就像在這之后一度流行的一種方法:
復(fù)制代碼 代碼如下:
var ie = ! + "\v1";
這個(gè)是利用IE不支持垂直制表符的特性而判別的,僅僅7個(gè)字符已經(jīng)很讓人震驚了,可是這個(gè)記錄被一個(gè)俄國人在今年早些的時(shí)候打破了,人家只需要6個(gè)字符就可以搞定了。
我們暫且不討論這一個(gè)字符能夠做什么,但把它看作是一種研究,或者你說他是閑的那啥痛也行(吐槽~)。
復(fù)制代碼 代碼如下:
var ie = ! - [1,];
其實(shí)它的原理很簡單,[1,]在標(biāo)準(zhǔn)瀏覽器會(huì)返回字符串"1",相當(dāng)于調(diào)用[1,].toString,IE則返回"1,"。但是這樣IE與標(biāo)準(zhǔn)都會(huì)通過檢測,因此使用負(fù)號(hào)強(qiáng)制轉(zhuǎn)換為數(shù)字,標(biāo)準(zhǔn)能成功轉(zhuǎn)換為1,1會(huì)在if中自動(dòng)轉(zhuǎn)換為true,而IE則轉(zhuǎn)換為NaN,再自動(dòng)轉(zhuǎn)換為false!查看DEMO。
很簡單對(duì)吧?肯定會(huì)有很多人跟我一樣在想,我怎么就沒想到呢?是啊,我怎么就沒想到呢?(笑~)
相關(guān)文章
JavaScript對(duì)象詳解之對(duì)象屬性的添加
這篇文章主要給大家介紹了關(guān)于JavaScript對(duì)象詳解之js對(duì)象屬性的添加的相關(guān)資料,在JavaScript中對(duì)象是通過鍵值對(duì)來存儲(chǔ)數(shù)據(jù)的一種數(shù)據(jù)類型,可以通過直接給對(duì)象添加屬性的方式來增加對(duì)象的屬性,需要的朋友可以參考下2023-07-07
基于ajax與msmq技術(shù)的消息推送功能實(shí)現(xiàn)代碼
這篇文章主要介紹了基于ajax與msmq技術(shù)的消息推送功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12
Javascript ES6中數(shù)據(jù)類型Symbol的使用詳解
Symbol類型是es6新增的一個(gè)數(shù)據(jù)類型,Symbol值通過Symbol函數(shù)生成Symbol類型是保證每個(gè)屬性的名字都是獨(dú)一無二的,對(duì)于一個(gè)對(duì)象由對(duì)個(gè)模塊構(gòu)成的情況非常有用,本文主要介紹了Javascript ES6中數(shù)據(jù)類型Symbol使用的相關(guān)資料,需要的朋友可以參考下。2017-05-05
JavaScript實(shí)現(xiàn)多文件拖動(dòng)上傳功能
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)多文件拖動(dòng)上傳功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
JavaScript實(shí)現(xiàn)伸縮二級(jí)菜單
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)伸縮二級(jí)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
前端JavaScript實(shí)現(xiàn)本地模糊搜索功能的方法實(shí)例
對(duì)于模糊查詢,一般都是傳關(guān)鍵字給后端,由后端來做。但是有時(shí)候一些輕量級(jí)的列表前端來做可以減少ajax請(qǐng)求,在一定程度上提高用戶體驗(yàn),這篇文章主要給大家介紹了關(guān)于前端JavaScript如何實(shí)現(xiàn)本地模糊搜索功能的相關(guān)資料,需要的朋友可以參考下2021-07-07
js 動(dòng)態(tài)修改css文件用到了cssRule
js 動(dòng)態(tài)修改css文件,循環(huán)用的underscore,在使用cssRule只能使用cssRule.style.padding=0px,詳細(xì)示例如下2014-08-08

