簡體   English   中英

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

[英]How to avoid some javascript codes from executing if the browser is 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";
        }
  }

我想避免代碼

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

如果瀏覽器是IE8則執行..請幫助。

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

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

而不是這個,您應該使用jQuery.support ,它將告訴您是否可以使用opacity

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

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

你可以通過檢查document.all來做到這一點(僅適用於IE)。 但這通常是一個壞主意。 您應該將樣式移動到類(在IE中使用過濾器模擬不透明度),並從JS代碼中設置這些類。 此外,您可以使用<!--[if IE 8]>等有條件地為IE加載CSS文件

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

您可以使用導航器對象,其中包含訪問者瀏覽器上的所有信息。

要測試導航器對象:

<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

使用jQuery $.browser對象:

if (!($.browser.msie && $.browser.version.substr(0,1) == 8)) {
    // this code will not execute on IE 8 but will run on other IE versions
}

http://api.jquery.com/jQuery.browser/

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";
    }
}

jQuery的$ .browser應該可以做到這一點,但這是另一個解決方案

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;
 }

如果IE8返回true。

此外,jQuery css不透明度是標准化的,應該在IE8中正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM