Подтвердить что ты не робот

Если условие: если браузер IE, а версия браузера IE старше 9

Если это условие ниже, я думаю, что это говорит - если браузер IE и версия браузера IE новее, чем 9, но у меня нет IE 9, чтобы проверить его, поэтому трудно понять правильный вывод, также это не 100% того, что я хочу bcos, этот script должен запускаться в других браузерах тоже по умолчанию, например Chrome, Firefox и т.д. - можно ли установить его в условии if?

if ($.browser.msie && parseInt($.browser.version) > 9) 
{
  // run this code
}

Причина, по которой я хочу использовать, если условие заключается в том, что script, похоже, имеет ошибку в IE 7, и, конечно, лучше всего исправить script, но я не могу определить, какая часть script IE не принимает его (все остальные браузеры работают отлично!). Вы знаете, какой инструмент я могу использовать для отладки script для IE 6, 7, 8 и т.д.? Я использую notepad ++ для написания своего jquery и т.д., Поэтому он не предоставляет никаких отладочных файлов...

Итак, моим лучшим лучшим решением является не запуск этого script, если это браузер IE старше 9.

Кстати, это отображение сообщений об ошибках в браузере IE7, но я никогда не могу его понять!

Line:910  //which line?
Char:4   // what the hell is this?
Error: Object doesn't support this property or method //what?
Code: 0    // 0 of what?
URL: http://localhost/mysite/page-1 // so which file is causing the error then? the .js or .html or something else??

кровавый IE!

спасибо.

4b9b3361

Ответ 1

Во-первых, вы можете получить предварительный просмотр IE9, загрузив его с сайта Microsoft: http://ie.microsoft.com/testdrive/

Во-вторых, parseInt($.browser.version) > 9 предположительно проверит, что версия больше 9, что, конечно же, не будет, пока не будет выпущен v10. (возможно, вы планируете >= ('больше или равно')?

Я обычно говорю людям избегать обнаружения браузера или кода браузера. Бывают моменты, когда это необходимо, но они довольно редки. Большую часть времени разработчику было бы лучше обслуживать, зная, что не удается и работает вокруг него (такие инструменты, как Modernizr, действительно помогают в этом).

Однако есть моменты, когда нужно просто выполнять обнаружение браузера.

В вашем случае, если вам действительно нужно определить IE, не делайте этого так, как вы делаете (т.е. проверяете версию 9); было бы лучше проверить более старые версии, и я бы предположил, что условный комментарий будет лучшим способом сделать это.

<script>
var i_am_old_ie = false;
<!--[if LT IE  9]>
i_am_old_ie = true;
<![endif]-->
</script>

Затем ваш оператор if() позже может выглядеть примерно так:

if(i_am_old_ie) {
   //do stuff for IE6/7/8
} else {
   //do stuff for all other browsers (including IE9)
}

Ответ 2

Ваш код выглядит отлично, но вы забыли установить параметр radix в parseInt:

if ($.browser.msie && parseInt($.browser.version, 10) > 9){

  // you need to wait a couple years to test if it works...
  alert("I'm IE10 or 11...");

}

Это не может вызвать ошибок

Ответ 3

Там еще проще.

Поскольку это комментарий, он будет игнорироваться всеми другими браузерами, кроме IE.

var IE;
//@cc_on IE = navigator.appVersion;

Тогда просто используйте это в you'r script, чтобы обнаружить все версии IE.

if (IE) {
//This is IE.
}
else {
//This is NOT IE.
}

Или сопоставлять любую версию:

if (IE <= 6) {}, if (IE < 9) }, if (IE == 7) {} etc etc...

Здесь источник, где я нашел эти типы условных выражений: http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

Ответ 4

Вот версия Javascript для проверки, является ли браузер IE:

<script>

    function getIEVersion() {
        var rv = -1; // Return value assumes failure.
        if (navigator.appName == 'Microsoft Internet Explorer') {
            var ua = navigator.userAgent;
            var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
            if (re.test(ua) != null)
                rv = parseFloat( RegExp.$1 );
        }
        return rv;
    }


    function checkVersion() {
        var ver = getIEVersion();

        if ( ver != -1 ) {
            if (ver <= 9.0) {
                // do something
            }
        }
    }

    checkVersion();

</script>

Этот метод полезен, если вы используете специальные модули HTML5 и хотите реализовать некоторые резервные функции, если браузер не поддерживает эти функции, например. <canvas>

Ответ 5

Вместо того, чтобы вставлять кучу встроенного javascript, вы можете просто добавить пустой div для версии, т.е. вы нацеливаетесь, поэтому поставьте следующее в верхней части своего html, только внутри тега body:

<!--[if LT IE  9]>
    <div id="iedetect" class="oldie"></div>
<![endif]-->

Затем вы можете поместить инструкцию if в свой jquery, чтобы проверить этот блок.

if ($("#iedetect").is(".oldie")) {
    //Do something
} else {
   //Do Something else in all other browsers
}

Ответ 6

Я обнаружил, что каскадирование отлично работает для обнаружения мультиблок. Этот код использовался для изменения выцветания, чтобы показать/скрыть, т.е. 8 7 6.

$(document).ready(function(){
    if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 8.0)
         { 
             $(".glow").hide();
            $('#shop').hover(function() {
        $(".glow").show();
    }, function() {
        $(".glow").hide();
    });
         }
         else
         { if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 7.0)
         { 
             $(".glow").hide();
            $('#shop').hover(function() {
        $(".glow").show();
    }, function() {
        $(".glow").hide();
    });
         }
         else
         {if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 6.0)
         { 
             $(".glow").hide();
            $('#shop').hover(function() {
        $(".glow").show();
    }, function() {
        $(".glow").hide();
    });
         }
         else
         { $('#shop').hover(function() {
        $(".glow").stop(true).fadeTo("400ms", 1);
    }, function() {
        $(".glow").stop(true).fadeTo("400ms", 0.2);});
         }
         }
         }
       });

Ответ 7

или вы можете это сделать

<!--[if IE 9]>
  <script type="text/javascript">
    // this is only executed for IE 9
  </script>
<![endif]-->

Ответ 8

<!--[if (IE 9)|!(IE)]><!--> Script here <!--<![endif]-->

Ответ 9

<!--[if IE 8]>
  <script type="text/javascript">
    // this is only executed for IE 8
  </script>
<![endif]-->