欧美一级色视频,簧片在线免费看,美日韩在线,成人观看网站a,亚洲欧美在线一区二区,欧美操穴,欧美综合专区

龍巖易富通網(wǎng)絡(luò)科技有限公司

龍巖小程序開發(fā),龍巖分銷系統(tǒng)

JavaScript 判定 IE 瀏覽器

2015.09.10 | 90閱讀 | 0條評論 | 未命名

IE瀏覽器不管是什么版本,總是跟Web標(biāo)準(zhǔn)有些不太兼容。對于代碼工作者來說,自然是苦不堪言,為了考慮IE的兼容問題,不管是寫 CSS 還是 JS,往往都要對 IE 特別對待,這就少不了做些判斷。本文不討論如何區(qū)分 IE 的樣式,僅是 JS 判定 IE 瀏覽器。 這個目前世界上最短的 Javascript 判定 IE 瀏覽器的方法來自俄羅斯!它已經(jīng)在各版本的 IE 以及目前其他流行的瀏覽器上經(jīng)過測試,基于 IE 的 Bug,微軟雖然已經(jīng)意識到,但是從來沒有糾正過。

<script type='text/javascript'> var ie = !-[1,]; alert(ie); </script>
以上代碼運行結(jié)果:IE 下返回true,其他標(biāo)準(zhǔn)瀏覽器返回false。!-[1,],僅僅只有 6 bytes! 不過如果反過來判斷,標(biāo)準(zhǔn)瀏覽器返回 true 而 IE 返回 false的話,則可以再縮短一個byte。
<script type='text/javascript'> notIe = -[1,]; if(-[1,]){ // 標(biāo)準(zhǔn)瀏覽器代碼 }else{ // IE Only的代碼 } </script>
看完了這些,你們是不是很好奇這些是怎么運行的?請繼續(xù)看下文。 這個 Bug 產(chǎn)生的原因是 IE 會添加一個空數(shù)組元素到數(shù)組元素的總數(shù)里。 [1,]. Length標(biāo)準(zhǔn)瀏覽器會返回 1 (基于標(biāo)準(zhǔn)的 ECMAscript ,在數(shù)組最后的逗號”,”會被忽略,這是為了方便在一列里顯示以及自動生成等),但是 IE 會返回 2。當(dāng)你打印這個數(shù)組的時候 IE 將會返回 “1, “,也就是兩個元素,而其他標(biāo)準(zhǔn)瀏覽器將會返回 “1″。 這很容易驗證,比如在 IE 和 FF中運行以下代碼:
<script type='text/javascript'> alert([,]==','); //這是8個字符判定IE </script>
[1,]實際上瀏覽器的操作是toString()轉(zhuǎn)換成字符串的操作,-[1,]是將字符串強制轉(zhuǎn)換為數(shù)字。而 IE 將會返回 NaN,但是遺憾的是 NaN 并不是一個數(shù)字,因為[1,]轉(zhuǎn)換成字符串后的”1,”里面帶有逗號。而其他標(biāo)準(zhǔn)瀏覽器會返回 -1,這是一個非 0 的數(shù)字。 你知道,NaN 轉(zhuǎn)換成 Boolean 型將返回 false,所以-[1,]在 IE 下將返回 false。而任何非 0 的數(shù)字轉(zhuǎn)換成 Boolean 型(例如-1),在 標(biāo)準(zhǔn)瀏覽器下都將返回 true。所以我們得到了一個判定結(jié)果,!-[1,]在 IE 下返回true,而在其他標(biāo)準(zhǔn)瀏覽器下返回 false。也就達到了區(qū)分判定 IE 瀏覽器的目的。 當(dāng)然,如前文所說,這個 Bug 其實微軟很早就已經(jīng)知道,但是卻一直沒有去修復(fù)它,所以在未來的 > IE8 的 IE 瀏覽器也就不確定是否依舊可以,不過基本上這么多代的 IE 都沒有修復(fù),未來的 IE 也不太會去修復(fù)的樣子。 以下是其他的一些區(qū)分判定 IE 瀏覽器的代碼,也可以參考下:
<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>

贊 (

發(fā)表評論

互助| 高邑县| 丁青县| 临清市| 大化| 盘山县| 合山市| 堆龙德庆县| 来安县| 商水县| 隆德县| 长阳| 美姑县| 大厂| 如皋市| 绍兴县| 沙雅县| 常州市| 叙永县| 永川市| 华宁县| 峨眉山市| 旌德县| 祁阳县| 喜德县| 大同市| 灵璧县| 徐州市| 麦盖提县| 陆川县| 施甸县| 曲阜市| 商城县| 化州市| 如东县| 灵台县| 丰城市| 容城县| 焦作市| 扎赉特旗| 汶上县|