2012-01-13 38 views
0

我有一些JavaScript代碼如果瀏覽器是Internet Explorer,如何避免執行一些JavaScript代碼?

var href = "demo.php"; 
    if(href) 
    { 
     if($("#opacity")){ 
      $("#opacity").css({ 
       opacity: 0.5 
      }); 
     } 
     if (document.getElementById("layer")) { 
      var ele = document.getElementById("layer"); 
      ele.style.display = "block"; 
     } 
    } 

我想避免執行如果瀏覽器IE8是。請幫助碼

if($("#opacity")){ 
      $("#opacity").css({ 
       opacity: 0.5 
      }); 
     } 

。 。 。

+0

只是在IE8或IE的所有版本? – Canastro 2012-01-13 09:23:49

回答

0

您可以通過檢查document.all(僅適用於IE)來執行此操作。但這通常是一個糟糕的主意。你應該改變你的樣式到類中(使用過濾器來模擬IE中的不透明度),並且只需從你的JS代碼中設置這些類。此外,您可以使用<!--[if IE 8]>

if(!document.all) { 
    if($("#opacity")){ 
     $("#opacity").css({ opacity: 0.5 }); 
    } 
} 
0

您使用前人的精力包含訪問者的瀏覽器的所有信息navigator對象有條件地加載CSS文件的IE瀏覽器。

要測試導航對象:

<div id="example"></div> 

<script type="text/javascript"> 

txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>"; 
txt+= "<p>Browser Name: " + navigator.appName + "</p>"; 
txt+= "<p>Browser Version: " + navigator.appVersion + "</p>"; 
txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>"; 
txt+= "<p>Platform: " + navigator.platform + "</p>"; 
txt+= "<p>User-agent header: " + navigator.userAgent + "</p>"; 

document.getElementById("example").innerHTML=txt; 

</script> 

此代碼是在一個例子:http://www.w3schools.com/js/js_browser.asp

2

您可以使用jQuery.browser ,檢測牛逼weither瀏覽器是IE8,但它被認爲是一種不好的做法:

if ($.browser.msie && $.browser.version.substr(0,1) == 8)) { 
    // ... 
} 

取而代之的是,你應該使用jQuery.support,它會告訴你,如果你可以用opacity與否:

透明度如果瀏覽器可以正確解釋不透明度樣式屬性,則等於true。 (它目前在IE中是錯誤的,它使用alpha濾鏡代替)。 CSS3規範

if (!$.support.opacity) { 
    // ... 
} 
+0

+1用於功能檢測而不是瀏覽器代理檢查。 – 2012-01-13 08:03:02

0
if(href){ 
    if(!($.browser.msie && $.browser.version == "8.0")){ 
     if($("#opacity")){ 
      $("#opacity").css({ 
       opacity: 0.5 
      }); 
     } 
    } 
    if (document.getElementById("layer")) { 
     var ele = document.getElementById("layer"); 
     ele.style.display = "block"; 
    } 
} 
0

jQuery的$ .browser應該這樣做就好了,但這裏的另一個解決方案,如果IE8

function isie() { 
    var ie = false, 
     version = 100; 
    if (navigator.appVersion.indexOf("MSIE") != -1) var version = parseFloat(navigator.appVersion.split("MSIE")[1]);if (version == 8) {var ie = true} return ie; 
} 

返回true。

此外,jQuery的CSS不透明度是正常化,應該在IE8中工作得很好。

相關問題