如何检测浏览器是否支持指定css伪类?

时间:2011-12-16 09:08:58

标签: javascript css3 detection pseudo-class browser-feature-detection

通过JavaScript检测浏览器中任何css伪类支持的概念是什么?确切地说,我想检查用户的浏览器是否支持:checked伪类,因为我已经制作了一些带有复选框的CSS弹出窗口,并且需要为旧浏览器做回退。

答案:我发现在Modernizr method中已经实施了"Additional Tests"测试css选择器。

4 个答案:

答案 0 :(得分:4)

您只需检查是否应用了伪类的样式。

像这样:http://jsfiddle.net/qPmT2/1/

答案 1 :(得分:2)

如果规则无效,

stylesheet.insertRule(rule, index)方法将抛出错误。所以我们可以使用它。

var supportPseudo = function (){
    var ss = document.styleSheets[0];
    if(!ss){
        var el = document.createElement('style');
        document.head.appendChild(el);
        ss = document.styleSheets[0];
        document.head.removeChild(el);
    }
    return function (pseudoClass){
        try{
            if(!(/^:/).test(pseudoClass)){
                pseudoClass = ':'+pseudoClass;
            }
            ss.insertRule('html'+pseudoClass+'{}',0);
            ss.deleteRule(0);
            return true;
        }catch(e){
            return false;
        }
    };
}();


//test
supportPseudo(':hover'); //true
supportPseudo(':before'); //true
supportPseudo(':hello'); //false
supportPseudo(':world'); //false

答案 2 :(得分:1)

如果你可以使用Javascript,你可以跳过检测并向右移动垫片:Selectivizr

答案 3 :(得分:1)

对于仍在寻找快速解决此问题的任何人,我根据该主题中的其他一些答案总结了一些东西。我的目标是使其简洁。

bestMove()