34

jquery.support を使用して IE6 (および IE7 ではない) に固有のものをテストする方法について誰かアイデアがありますか?

私の問題は、IE6 がアンカー要素に対してのみ :hover 疑似クラスをサポートし、IE7 がすべての要素 (FF、Chrome など) に対してサポートしていることです。したがって、ブラウザがすべての要素に対して :hover をサポートしていない場合に備えて、何か特別なことをしたいと考えています...したがって、この機能をテストする方法が必要です。(jQuery.browser を使用したくない)。何か案は?

4

8 に答える 8

55

ユーザーエージェントではなく機能のサポートを確認することをお勧めしますが、JavaScriptを使用してcssプロパティのサポートのようなものを確認する簡単な方法はありません。条件付きコメントを使用するという上記の投稿者の提案に従うか、jQuery.browserを使用することをお勧めします。単純な実装(パフォーマンスやバグについて検証されていない)は、次のようになります。

if ($.browser.msie && $.browser.version.substr(0,1)<7) {
  // search for selectors you want to add hover behavior to
  $('.jshover').hover(
    function() {
      $(this).addClass('over');
    },
    function() {
      $(this).removeClass('over');
    }
}

マークアップで、css効果をホバーしたい要素に.jshoverクラスを追加します。cssに、次のようなルールを追加します。

ul li:hover, ul li.over { rules here }
于 2009-02-25T01:28:56.200 に答える
21

Microsoft Internet Explorer 固有の条件付きコメントを使用して、特定のコードを IE6 だけに適用できます。

<!--[if IE 6]>
  Special instructions for IE 6 here... e.g.
  <script>...hook hover event logic here...</script>
<![endif]-->
于 2009-02-25T01:14:13.597 に答える
20

シックボックスの使用

if(typeof document.body.style.maxHeight === "undefined") {
    alert('ie6');
} else {
    alert('other');
}
于 2009-04-17T20:47:47.497 に答える
2

これは、一歩下がって、なぜそうしているのかを尋ねるべき場所の一例です。

通常、メニューを作成します。もしそうなら、私はあなた自身にいくつかの頭痛を救い、スーパーフィッシュのようなプラグインまたは多くの選択肢の1つを使用することを強くお勧めします。

そうでない場合は、 jQuery hover()イベントリスナーを使用することをお勧めします。例えば:

$("td").hover(function() {
  $(this).addClass("hover");
}, function() {
  $(this).removeClass("hover");
});

あなたが望むことをします。

于 2009-02-25T01:28:00.133 に答える
1

楽しみのために(jQuery.supportを使用していません):

$(document).ready(function(){
    if(/msie|MSIE 6/.test(navigator.userAgent)){
        alert('OMG im using IE6');
    }
});

php経由でもできます

<?
if(preg_match('/\bmsie 6/i', $ua) && !preg_match('/\bopera/i', $ua)){
    echo 'OMG im using IE6';
}
?>
于 2011-12-03T19:52:54.660 に答える
0

jQuery.support には検出するプロパティがありません :hover サポート http://docs.jquery.com/Utilities/jQuery.support

しかし、おそらく単に hover() イベントhttp://docs.jquery.com/Events/hoverを使用でき ます

于 2009-02-25T01:12:37.330 に答える
-2
if ($.browser.msie && parseInt($.browser.version, 10) == 6) {
  alert("I'm not dead yet!"); 
}
于 2011-11-29T12:40:50.950 に答える