通过jQuery检测对特定HTML 5function的支持

我正在研究一些HTML5演示代码,包括东西

这当前在Opera 10中正常工作,但每个其他浏览器只显示正常的文本输入。 然后我使用jQuery.date-input插件在不支持它的浏览器上覆盖此行为。

问题是 – jQuery也在Opera上运行,所以在Opera中我得到两个日历选择器(一个来自浏览器,一个来自jQuery)

我现在可以使用if (window.opera)解决这个问题 – 但是有一些方法可以使用jQuery.support,我可以可靠地检测当前浏览器是否支持特定的HTML5function吗?

我会看看Modernizr 。 它是一个开源的,麻省理工学院授权的Javascript库,可以检测对许多HTML5 / CSS3function的支持,它非常​​小(7kb压缩)。 要使用它,只需:

  

在您的文档的内。 之后,它具有各种function来检查您的需求。 例:

 if (Modernizr.canvas) { // do stuff } 

还有很多方法可以检查您想要的特定HTML5 / CSS3function。 查看他们的网站以获取它并查看文档。

是的,检查特定的浏览器根本不是你想要的。 它有时可用于检测何时需要为浏览器错误(通常使用IE)应用变通方法,但如果您想知道浏览器是否支持某项function,只需嗅探它。

有些东西比其他东西更容易嗅到。 对于日期输入支持的例子,它非常简单。 input.type属性告诉您浏览器认为它是什么类型的控件; 如果不支持日期输入,您将获得'text'

  if ($('.dateinput')[0].type!=='date') { $('.dateinput').addSomeDateScriptingPluginThing(); }