Как избежать выполнения некоторых кодов JavaScript, если браузер является Internet Explorer? - PullRequest
0 голосов
/ 13 января 2012

У меня есть несколько кодов 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 .. Пожалуйста, помогите. , .

Ответы [ 6 ]

2 голосов
/ 13 января 2012

Вы можете использовать jQuery.browser , чтобы определить, является ли браузер IE8, но это считается плохой практикой:

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

Вместо этого вы должны использовать jQuery.support , который сообщит вам, можете ли вы использовать opacity или нет:

opacity равно true, если браузер может правильно интерпретировать свойство стиля opacity. (Это в настоящее время ложно в IE, вместо этого он использует альфа-фильтры). CSS3 spec

if (!$.support.opacity) {
  // ...
}
0 голосов
/ 13 января 2012

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

возвращает true, если IE8.

Кроме того, прозрачность jQuery css нормализована и должна отлично работать в IE8.

0 голосов
/ 13 января 2012
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 голосов
/ 13 января 2012

Используйте объект 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/

0 голосов
/ 13 января 2012

Вы можете использовать объект навигатор, который содержит всю информацию в браузере посетителя.

Для проверки объекта навигатора:

<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

0 голосов
/ 13 января 2012

Вы можете сделать это, установив document.all (верно только для IE).Но это вообще плохая идея.Вместо этого вам следует переместить ваши стили в классы (использовать фильтр для имитации прозрачности в IE) и просто установить эти классы из кода JS.Кроме того, вы можете условно загрузить CSS-файлы для IE, используя <!--[if IE 8]> и т. Д.

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