5

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

答:我发现已经在Modernizr的"Additional Tests"实施检验CSS选择器的method

+1

[Modernizr](http://www.modernizr.com/)检测到很多这样的事情。 – 2011-12-16 09:11:04

+0

我知道Modernizr,但它没有测试css3伪类支持,只有像`:: before`这样的伪元素,等等。 – Raiden 2011-12-16 10:00:59

回答

1

如果你有使用Javascript OK,你可以跳过检测和去正确的垫片:Selectivizr

+3

最好不要使用Selectivizr,因为性能是由于解析导致的dicreasing呈现页面之前的CSS。 – andychups 2011-12-16 10:25:18

0

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 
相关问题