2009-02-25 16 views
34

任何人都有關於如何使用jquery.support測試特定於IE6(而不是IE7)的任何想法?使用jQuery.support檢測IE6

我的問題是,IE6支持:懸停psuedo類只錨元素和IE7確實支持所有元素(如FF,鉻等)。所以我想在瀏覽器不支持的情況下做一些特殊的事情:爲所有元素懸停...因此我需要一種方法來測試這個功能。 (不想使用jQuery.browser)。有任何想法嗎?

+0

沒有下面的答案竟然回答了這個問題!這是荒謬的。 – vsync 2013-02-20 16:34:16

回答

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

在您的標記,該.jshover類添加到您想要懸停在CSS效果的任何元素。在你的CSS,添加規則是這樣的:

ul li:hover, ul li.over { rules here } 
21

您可以使用Microsoft Internet Explorer中的具體Conditional Comment具體應用代碼只是IE6。

<!--[if IE 6]> 
    Special instructions for IE 6 here... e.g. 
    <script>...hook hover event logic here...</script> 
<![endif]--> 
+0

這可能是最好的選擇,只是想知道是否有人有另一種方式來做到這一點...因爲jQuery文檔中提到「jQuery帶有許多屬性,你應該隨時添加你自己的。」無論如何感謝 – Jaime 2009-02-25 01:22:43

+0

如果您要動態加載腳本或在動態創建的元素(例如模態)上運行代碼,這將不起作用。 – KyleFarris 2013-07-23 18:52:34

+0

@KyleFarris取決於...你可以檢查IE6與條件註釋,如果你滿足條件,根據需要爲所有現有的DOM元素和未來元素使用`.live()`處理程序(在jQuery的最高設置jQuery的處理程序從jQuery的V1.8)或首選'。對()`1.7+ http://api.jquery.com/on/ – scunliffe 2013-07-23 20:38:44

2

這是一個例子,我們應該退後一步,問爲什麼你這樣做。

通常是創建一個菜單。如果是這樣,我強烈建議你省去一些頭疼的問題,並使用像superfish這樣的插件或者其中一種插件。

如果不是,我建議你使用jQuery hover()事件監聽器。例如:

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

會做你想做的。

+0

我做一個自定義的下拉列表中具有潛在的很多項目,所以我想如果是 Jaime 2009-02-25 01:48:17

+0

速度是:盤旋一個問題?換句話說:支持混合解決方案的複雜性成本是否值得? – cletus 2009-02-25 02:01:07

+0

好問題,可能不是,它只是感覺有點遲緩使用懸停事件 – Jaime 2009-02-25 02:12:11

20

ThickBox的使用

if(typeof document.body.style.maxHeight === "undefined") { 
    alert('ie6'); 
} else { 
    alert('other'); 
} 
-2
if ($.browser.msie && parseInt($.browser.version, 10) == 6) { 
    alert("I'm not dead yet!"); 
} 
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'; 
} 
?>