2012-04-05 73 views
2

我想測試如果IE是版本7或8,並且它是否阻止特定的代碼段運行?如何測試Internet Explorer版本是否爲版本7或版本8?

我嘗試下面的代碼,但這似乎沒有工作:

if($.browser.msie && parseInt($.browser.version, 10) <= 8) { 
     $(document).on('mouseenter', '.thumb', function() { 
      $(this).find('.bgg').stop().animate({ opacity : 1 }); 
     }); 

     $(document).on('mouseleave', '.thumb', function() { 
      $(this).find('.bg').stop().animate({ opacity : .5 }); 
     }); 
     } 

理想我真的不想使用這種檢測,但在這種情況下,必須使用。

回答

2

由於只有一個腳本文件的需求,我不得不在我的項目中使用UA嗅探IE。我們不希望@ Kolink的方法需要額外的http請求,也不希望分割功能。對於我會簡單地使用:

var ltie9 = $.browser.msie && parseInt($.browser.version, 10) < 9; 

,然後做你想做的使用:

if (ltie9) { ... } 

我有一個jsFiddle顯示幾種不同的IE檢測多達IE10只是爲了演示。

+0

全局是醜陋 – Christoph 2012-04-05 12:21:21

+0

我有一個全球唯一的另一件事是,我運行整個腳本我的對象字面命名空間。我不濫用它,因此保持清潔。 – 2012-04-05 12:24:00

+0

爲什麼不把它包含在你的名字空間呢?全局變量容易發生不必要的修改。 UA嗅探極易出錯。 – Christoph 2012-04-05 12:27:27

4

簡單的方法:

<!--[if lte IE 8]><script type="text/javascript"> 
    // specific code for IE8 and below goes here. 
</script><![endif]--> 
+0

+1用於隱藏不必要的其他瀏覽器。 (儘管以http請求爲代價) – Christoph 2012-04-05 12:22:26

0

使用object detection。 IE7不提供querySelector方法,因此,例如取代

if ($.browser.msie && parseInt($.browser.version, 10) <= 8) 

if (document.all && !document.querySelector) 

Here一些更多的想法

+0

+1引入了doctype嗅探特徵檢測的一般概念。但是,只有在嘗試檢測您需要的功能時才能正常工作。使用不相關的功能可能會導致錯誤。 – Christoph 2012-04-05 12:20:51

+0

任天堂DSi的基於Opera的瀏覽器也不支持'querySelector'。這是否意味着它是IE7? – 2012-04-05 12:22:03

+0

@Kolink:我沒有注意到使用「Nintendo DS」標籤的問題OP。 – KooiInc 2012-04-05 12:27:21

0

IE8可用作和行爲像IE7-

來區分,你可以測試document.documentMode

添加屬性navigator對象省去了測試再次

//(Run= {}; 

if(window.addEventListener){ 
    Run.handler= function(who, typ, fun){ 
     if(who && who.addEventListener) who.addEventListener(typ, fun, false); 
    }// all browsers except IE8 and below 
} 
else if(window.attachEvent){ 
    /*@cc_on 
    @if(@_jscript_version>5.5){ 
     navigator.IEmod= document.documentMode? 
     document.documentMode:window.XMLHttpRequest? 7:6; 
    } 
    @end 
    @*/ 
    Run.handler= function(who, typ, fun){ 
     if(who && who.attachEvent){ 
      who.detachEvent('on'+typ, fun); 
      who.attachEvent('on'+typ, fun); 
     } 
    } 
} 
相關問題