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

