如何使用JavaScript在浏览器中检查某个CSS功能而不检测其供应商,userAgent或appName?如何使用JavaScript在浏览器中检查某个CSS功能?
回答
我已经创造了一个jQuery的时候cssHook使用这样的事情:一个CSS属性值
var div = document.createElement("div"),
divStyle = div.style;
$.support.boxSizing =
divStyle.MozBoxSizing === ''? 'MozBoxSizing' :
(divStyle.WebkitBoxSizing === ''? 'WebkitBoxSizing' :
(divStyle.MsBoxSizing === ''? 'MsBoxSizing' :
(divStyle.boxSizing === ''? 'boxSizing' : false)));
div = divStyle = null; //release memory
测试:
测试的CSS属性:
var div = document.createElement("div"),
css = "background-image:gradient(linear,left top,right bottom, from(#9f9), to(white));background-image:-webkit-gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:-moz-gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:-o-gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:-ms-gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:-khtml-gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:linear-gradient(left top,#9f9, white);background-image:-webkit-linear-gradient(left top,#9f9, white);background-image:-moz-linear-gradient(left top,#9f9, white);background-image:-o-linear-gradient(left top,#9f9, white);background-image:-ms-linear-gradient(left top,#9f9, white);background-image:-khtml-linear-gradient(left top,#9f9, white);";
div.style.cssText = css;
$.support.linearGradient =
div.style.backgroundImage.indexOf("-moz-linear-gradient") > -1 ? '-moz-linear-gradient' :
(div.style.backgroundImage.indexOf("-webkit-gradient") > -1 ? '-webkit-gradient' :
(div.style.backgroundImage.indexOf("gradient") > -1 ? 'gradient' : false));
div= null; //release memory
神奇的例子,你甚至不需要jQuery来使用它。 – 2013-04-12 08:09:20
这个问题的问题是,每种属性的技术都不同。
一般的想法是使用JavaScript尝试使用该属性,然后测试该属性的某些定义的行为。
看到源代码Modernizr的,特征检测库:
http://www.modernizr.com/ - http://www.modernizr.com/downloads/modernizr-2.0.3.js
例如:
// http://css-tricks.com/rgba-browser-support/
tests['rgba'] = function() {
// Set an rgba() color and check the returned value
setCss('background-color:rgba(150,255,150,.5)');
return contains(mStyle.backgroundColor, 'rgba');
};
在不支持rgba
,返回值将浏览器不包含rgba
。
另外,正如@DanielB建议的,请看jQuery.support
以获得更多灵感。这里的源:
你可以使用一个像库这modernizr可以告诉你哪些功能可用于当前访客。
在这里采取了一些裂缝:http://www.fractured-state.com/2011/07/browser-color-override-test-for-modernizr/ – 2013-03-22 12:43:38
- 1. 如何检测浏览器功能?
- 2. 什么Javascript函数用于检查某个浏览器插件?
- 3. 使用JavaScript检查浏览器
- 4. 如何在JavaScript中检测浏览器?
- 5. 如何使用jquery检查浏览器?
- 6. 我该如何检查我的AJAX浏览器功能?
- 7. 如何检查浏览器对功能/事件的支持?
- 8. 浏览器检测与功能检测
- 9. 回传后,Javascript功能在Chrome浏览器中无法使用
- 10. javascript(或浏览器扩展)如何检测受限功能的使用?
- 11. 如何在浏览器中检查CSS供应商前缀?
- 12. 如何检查浏览器是否支持使用Ruby的HTML5和CSS3功能?
- 13. 使用JavaScript检查页面是否显示在浏览器中?
- 14. 如何在Facebook中使用javascript检测浏览器
- 15. 如何使用javascript在浏览器中检测手机事件?
- 16. 在浏览器中禁用键功能
- 17. Javascript(如何检查Id是否存在于IE7浏览器中)
- 18. 浏览器检测contenteditable功能
- 19. 在使用JavaScript的传统浏览器上模拟HTML5功能
- 20. 使用javascript检测浏览器用户
- 21. 如何检查是否浏览器是火狐在CSS
- 22. 确定手机浏览器是否支持CSS和JavaScript功能
- 23. 某些Css不能在IE8浏览器中工作
- 24. 在css中检测浏览器类型
- 25. 使用javascript检测浏览器视口
- 26. Javascript:使用中继器在ASP.NET中检查功能
- 27. 使用Javascript来检测谷歌浏览器切换CSS
- 28. URL检查在浏览器
- 29. CSS浏览器检测
- 30. Recreate在网页浏览器中查找页面浏览器功能
你有哪一个想法? – Tomgrohl 2011-06-08 08:55:23
@Tomgrohl,先谢谢了,没有特别的浏览器。我想测试CSS功能,而不是要求浏览器名称,就像测试JavaScript功能的正确方式一样。 – Babiker 2011-06-08 08:58:12
嘿,增加了一个可能有用的答案。 – Tomgrohl 2011-06-08 08:59:18