Jquery.supportを使用してIE6(IE7ではなく)に固有の何かをテストする方法についてのアイデアはありますか?
私の問題は、IE6はアンカー要素に対してのみ:hover psuedo-classをサポートし、IE7はすべての要素(FF、Chromeなど)に対してそれをサポートすることです。そのため、ブラウザがすべての要素で:hoverをサポートしていない場合に特別なことをしたいので、この機能をテストする方法が必要です。 (jQuery.browserを使用したくない)。何か案は?
ユーザーエージェントではなく機能のサポートを確認することをお勧めしますが、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');
}
}
マークアップで、.jshoverクラスを、ホバーcss効果が必要な要素に追加します。 cssで、次のようなルールを追加します。
ul li:hover, ul li.over { rules here }
Microsoft Internet Explorer固有の 条件付きコメント を使用して、特定のコードをIE6だけに適用できます。
<!--[if IE 6]>
Special instructions for IE 6 here... e.g.
<script>...hook hover event logic here...</script>
<![endif]-->
シックボックスは
if(typeof document.body.style.maxHeight === "undefined") {
alert('ie6');
} else {
alert('other');
}
これは、一歩下がって、なぜそうしているのかを尋ねる場所の一例です。
通常、メニューを作成します。もしそうなら、頭痛を省いて superfish のようなプラグインを使用するか、多くの選択肢の1つを使用することを強くお勧めします。
そうでない場合は、 jQuery hover() イベントリスナーを使用することをお勧めします。例えば:
$("td").hover(function() {
$(this).addClass("hover");
}, function() {
$(this).removeClass("hover");
});
あなたがしたいことをします。
ただの楽しみのため(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';
}
?>
Whatever:hoverを使用します- http://www.xs4all.nl/~peterned/csshover.html
それは振る舞いを使用し、私のためにうまく機能します。
jQuery.supportには、検出するプロパティがありません:hover support http://docs.jquery.com/Utilities/jQuery.support
しかし、おそらく単にhover()イベントを使用できます http://docs.jquery.com/Events/hover