4

Chrome /Mozillaでは正常に機能しているがIEでは機能しないjQueryコードがあります。

if ($("html").hasClass("ie")) {
    $(function(){
        $('.green-column, .red-column, .grey-column').click(function() { 
             alert ($(this).attr("data-type"));           
        });
    });
}
else {
 $(function(){
        $('.green-column, .red-column, .grey-column').click(function() { 
         $("<div title='Selected Task is:'>" + $(this).attr("data-type") + "</div>").dialog({ 
             modal: true,
             resizable: false,
             buttons: [
                {
                   text: "OK", 
                   click: function() { $( this ).dialog( "close" ); }
                }
             ]
         });
    });
});
}
</script> 
<!--[if IE 7]>    <html lang="en-us" class="ie"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="ie"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us" class="ie"> <!--<![endif]-->

そのため、IE9 / IE10のアラートを使用する予定ですが、ブラウザーを区別できません。jQuery/HTMLでIE9/IE10を識別する方法を教えてもらえますか?

4

5 に答える 5

14

ライブラリや条件付きコンパイルを使用せずに実現できます。

if (document.addEventListener) {
    alert("IE9 or greater");
}

if (window.requestAnimationFrame) {
    alert("IE10 or greater");
}
于 2013-09-18T12:03:56.037 に答える
7

このようにしてください

if ($.browser.msie  && parseInt($.browser.version, 10) > 8) {
  alert('IE9 or IE10'); 
} else {
  alert('Non IE9 or IE10');
}

これは、1.9未満のjQueryバージョンで機能するはずです。1.9以降を使用している場合は、このスレッドを読むか、 modernizrの使用を検討してください。

于 2013-03-27T11:23:20.113 に答える
6

現在アクティブなIEバージョン(おそらくエミュレートされている)を検出する唯一の信頼できる方法は、条件付きコンパイルdocument.documentModeチェックを組み合わせることです。

条件付きコンパイルはオプションですが、IE以外のブラウザーでIE検出スクリプトを実行することはできません。

例えば:

if (/*@cc_on !@*/false && (
       document.documentMode === 9 || document.documentMode === 10)
   ) {
    // IE 9 or 10 (not 8 or 11!)
    document.documentElement.className += ' ie9 ie10';
}

前のコードは、ミニファイアに対して安全ではありません。コードを縮小する場合は、条件付きコンパイルを文字列に入れてくださいeval

if (eval('/*@cc_on !@*/false') && ( ... )) { ... }
于 2013-03-27T11:28:35.070 に答える
2

これを取得するために提供された1.9より前の古いjQueryバージョン$.browser。ここで、jQueryは、代わりにを介して関数をチェックするように要求します$.support

かなり良い代替手段はmodernizr(http://modernizr.com/)です。Modernizrは、msieorie9またはwebkitortouchなどのクラスをルート要素に追加します。

したがって、簡単に確認できます。

if ($('html').hasClass('ie9')) {
    // do something
} 
于 2013-03-27T11:24:56.577 に答える
1

私はこれが古い質問であることを知っています。しかし、あなたが答えを見つけられなかった場合に備えて。

ブラウザがInternetExplorer9以降でない場合は、メッセージを表示します

browser={};
if (/(chrome\/[0-9]{2})/i.test(navigator.userAgent)) {
    browser.agent = navigator.userAgent.match(/(chrome\/[0-9]{2})/i)[0].split("/")[0];
    browser.version  = parseInt(navigator.userAgent.match(/(chrome\/[0-9]{2})/i)[0].split("/")[1]);
} else if (/(firefox\/[0-9]{2})/i.test(navigator.userAgent)) {
    browser.agent = navigator.userAgent.match(/(firefox\/[0-9]{2})/i)[0].split("/")[0];
    browser.version  = parseInt(navigator.userAgent.match(/(firefox\/[0-9]{2})/i)[0].split("/")[1]);
} else if (/(MSIE\ [0-9]{1})/i.test(navigator.userAgent)) {
    browser.agent = navigator.userAgent.match(/(MSIE\ [0-9]{1})/i)[0].split(" ")[0];
    browser.version  = parseInt(navigator.userAgent.match(/(MSIE\ [0-9]{1})/i)[0].split(" ")[1]);
} else if (/(Opera\/[0-9]{1})/i.test(navigator.userAgent)) {
    browser.agent = navigator.userAgent.match(/(Opera\/[0-9]{1})/i)[0].split("/")[0];
    browser.version  = parseInt(navigator.userAgent.match(/(Opera\/[0-9]{1})/i)[0].split("/")[1]);
} else if (/(Trident\/[7]{1})/i.test(navigator.userAgent)) {
    browser.agent = "MSIE";
    browser.version  = 11;
} else {
    browser.agent = false;
    browser.version  = false;
}

if (/(Windows\ NT\ [0-9]{1}\.[0-9]{1})/.test(navigator.userAgent)) {
    browser.os = "Windows";
    switch(parseFloat(navigator.userAgent.match(/(Windows\ NT\ [0-9]{1}\.[0-9]{1})/)[0].split(" ")[2])) {
    case 6.0:
        browser.osversion = "Vista";
        break;
    case 6.1:
        browser.osversion = "7";
        break;
    case 6.2:
        browser.osversion = "8";
        break;
    default:
        browser.osversion = false;
    }
} else if (/(OS\ X\ [0-9]{2}\.[0-9]{1})/.test(navigator.userAgent)) {
    browser.os = "OS X";
    browser.osversion = navigator.userAgent.match(/(OS\ X\ [0-9]{2}\.[0-9]{1})/)[0].split(" ")[2];
} else if (/(Linux)/.test(navigator.userAgent)) {
    browser.os = "Linux";
    browser.osversion = false;
}
于 2013-09-11T19:23:10.783 に答える