检查JS是否支持CSS属性?
我想检查用户的浏览器是否支持CSS属性pointer-events
(see documentation)。检查JS是否支持CSS属性?
目前,例如,它不受Opera支持,我相信一些版本的IE。
我想在JavaScript中运行检查并显示适当的HTML位,具体取决于它是否受支持。
有没有比检查用户代理字符串更好的方法吗?
我觉得
if ("pointer-events" in document.body.style)
或
if ("pointerEvents" in document.body.style)
应在SVG内容的情况下足够了。
非SVG内容,此脚本应该工作:
https://github.com/ausi/Feature-detection-technique-for-pointer-events
您也可以使用它没有的Modernizr:
var pointerEventsSupported = (function(){
var element = document.createElement('x'),
documentElement = document.documentElement,
getComputedStyle = window.getComputedStyle,
supports;
if(!('pointerEvents' in element.style)){
return false;
}
element.style.pointerEvents = 'auto';
element.style.pointerEvents = 'x';
documentElement.appendChild(element);
supports = getComputedStyle &&
getComputedStyle(element, '').pointerEvents === 'auto';
documentElement.removeChild(element);
return !!supports;
})();
if(pointerEventsSupported){
// do something
}
太棒了!感谢张贴这! –
@SerjSagan它现在也包含在Modernizr非核心检测中。如果您想使用Modernizr,您可以访问http://modernizr.com/download/并在非核心检测中激活css-pointerevents。 – ausi
通常你会检查用户代理是什么,并从中知道什么是或不支持。 – Endophage
@Endophage:通常情况下,你不这样做。 [功能检测](http://api.jquery.com/jQuery.support/)是优越的方法。尽管在“指针事件”的情况下,没有可靠的测试。 – thirtydot
@thirtydot特征检测是好的,如果只有你想做的一些有趣的事情。如果您有很多功能需要检测,请在Modernizer中说出所有内容,但效率不高。 – Endophage