欧美日韩国产一区二区|qovd片|小明个人发布看看|小浪货你夹真紧水又多|老头把我添高潮了A片故|99热久久精品国产一区二区|久久久春色AV

js中有關(guān)IE版本檢測(cè)

見(jiàn)得最多的就是檢測(cè)navigator.userAgent(這個(gè)可以面向所有瀏覽器,略過(guò)) 。

另外一種就是IE的條件注釋,這篇有個(gè)比較詳細(xì)的說(shuō)明 http://www.jb51.net/article/29336.htm

復(fù)制代碼 代碼如下:
!--[if !IE]!--
script type="text/javascript"
alert(’非IE’)
/ script
!--![endif]--

我測(cè)試的結(jié)果是這種形式是可用的 。唯一需要注意的是!-- [if IE 8] 中’IE’和’8’中間的這個(gè)空白符是必須的,掉了就悲劇了 。

基于IE的條件注釋,變種版本就有幾種,
第一、類似下面的形式:
復(fù)制代碼 代碼如下:
!--[if IE 6]
input type="hidden" id="ieVersion" value="https://www.questions.com.cn/dnjc/6" /
![endif]--
!--[if IE 7]
input type="hidden" id="ieVersion" value="https://www.questions.com.cn/dnjc/7" /
![endif]--

復(fù)制代碼 代碼如下:
var ieVersion = (function(){ return document.getElementById(’ieVersion’)})();

以此類推,可以獲得各個(gè)版本的信息,甚至可以添加gt,gte等,從而一次判定一類版本 。
關(guān)于這種寫(xiě)法,有個(gè)例子就是:
復(fù)制代碼 代碼如下:
!--[if IE 6]
html class="ie6"
![endif]--
!--[if IE 7]
html class="ie7"
![endif]--
!--[if !IE]!--
html!--![endif]--

于是在CSS里面就可以不用別的hack了,從而避免在IE里面多加載一次CSS ,
直接
復(fù)制代碼 代碼如下:
.ie6 xx{}
.ie7 xx{}
.ie8 xx{}
xx{}

第二、既然可以寫(xiě)在頁(yè)面內(nèi),當(dāng)然也可以JS來(lái)動(dòng)態(tài)生成 。我google了一把 , 發(fā)現(xiàn)還真有人這么做的 。
文章地址如下:http://www.jb51.net/article/29337.htm,寫(xiě)得還比較詳細(xì),原理也很簡(jiǎn)單 。
不過(guò)這樣的缺憾就是把條件注釋限定到JS上了,于CSS就是雞肋了 。
繼續(xù),既然可以動(dòng)態(tài)生成條件注釋來(lái)辨明IE版本,基于IE的CSS hack , 應(yīng)該也可以動(dòng)態(tài)生成一段html片段,用樣式值來(lái)判定版本 。
下面是最容易想到的形式,我測(cè)試發(fā)現(xiàn)這么確實(shí)可以,不過(guò)也發(fā)現(xiàn)了一個(gè)問(wèn)題,看下面的一段代碼:
復(fù)制代碼 代碼如下:
div id="test_1"span style="color: red; color: #ff6600; color: yellow9; *color:green; _color:blue;"測(cè)試/span/div
script type="text/javascript"
var test_1 = document.getElementById(’test_1’);
var test_2 = document.createElement(’div’);
test_2.innerHTML = ’span style="color: red; color: #ff66000; color: yellow90; *color:green; _color:blue;"測(cè)試/span’;
console.log(’test_1:’test_1.firstChild.style.color’----’’test_2:’test_2.firstChild.style.color);
/script

在IE9下結(jié)果:LOG: test_1:yellow----test_2:yellow
在IE8下結(jié)果:LOG: test_1:#ff6600----test_2:#ff6600
在IE7下結(jié)果:LOG: test_1:green----test_2:blue
在IE6下結(jié)果:test_1:blue ----test_2:blue (IE6沒(méi)有console.log , 所以上面的console.log需要換成alert)

上面的問(wèn)題大家應(yīng)該看出來(lái)了,IE7下兩種情況不一致,不知道是我的IE7兼容模式的問(wèn)題還是別的什么原因,知道的請(qǐng)指教 。
確認(rèn)代碼:
復(fù)制代碼 代碼如下:
divspan style="*color:red; _color:blue;"原始/span/div
script
var test = document.createElement(’div’);
test.innerHTML = ’span style="*color:red; _color:blue;"動(dòng)態(tài)生成/span’;
document.body.appendChild(test);
/script

IE7結(jié)果:
【js中有關(guān)IE版本檢測(cè)】

js中有關(guān)IE版本檢測(cè)

IE6結(jié)果:
js中有關(guān)IE版本檢測(cè)

基本原理和IE的條件注釋差不多,我們一次檢測(cè)color值就可以了,所以改變一下上面的例子就是:
復(fù)制代碼 代碼如下:
div id="test_1"span style="color: red; color: #ff6600; color: yellow9; *color:green; _color:blue;"測(cè)試/span/div
script type="text/javascript"
var test_1 = document.getElementById(’test_1’);
//var test_2 = document.createElement(’div’);
//test_2.innerHTML = ’span style="color: red; color: #ff66000; color: yellow90; *color:green; _color:blue;"測(cè)試/span’;
var c = test_1.firstChild.style.color;
alert(c==’red’?’other’:c==’yellow’?’IE9’:c==’#ff6600’?’IE8’:c==’green’?’IE7’:’IE6’);
/script

在IE9下結(jié)果:IE9
在IE8下結(jié)果:IE8
在IE7下結(jié)果:IE7
在IE6下結(jié)果:IE6

按理來(lái)說(shuō),對(duì)于FF,Chrome/Safari、opera都可以利用-moz、-webkit、-o等私有前綴來(lái)辨別 , 不過(guò)對(duì)于屬性的選取要斟酌,類似color是不行的 。
這個(gè)檢測(cè)方法旁門左道而已 , 未來(lái)版本或者其他瀏覽器是不是有這個(gè)bug也不確定,而且IE7的那個(gè)bug我還沒(méi)有弄清楚,所以也就暫時(shí)知道可以這么做就可以了 。您可能感興趣的文章:js:日期正則表達(dá)式及檢測(cè)檢測(cè)jQuery.js是否已加載的判斷代碼Js檢測(cè)判斷URL網(wǎng)址輸入是否正確JavaScript檢測(cè)上傳文件大小的方法javascript 檢測(cè)瀏覽器類型和版本的代碼javascript檢測(cè)瀏覽器的縮放狀態(tài)實(shí)現(xiàn)代碼javascript檢測(cè)對(duì)象中是否存在某個(gè)屬性判斷方法小結(jié)JavaScript快速檢測(cè)瀏覽器對(duì)CSS3特性的支持情況使用js檢測(cè)瀏覽器是否支持html5中的video標(biāo)簽的方法Javascript中常用的檢測(cè)方法小結(jié)

相關(guān)經(jīng)驗(yàn)推薦