繁体   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