La detección de soporte para HTML 5 características específicas a través de jQuery

StackOverflow https://stackoverflow.com/questions/1657170

  •  11-09-2019
  •  | 
  •  

Pregunta

Estoy trabajando en un código de demostración de HTML5, incluyendo cosas como <input type="date" />

Esta actualmente funciona correctamente en Opera 10 que está, pero cada otro navegador sólo muestra una entrada de texto normal. entonces yo estoy usando un plugin jQuery.date-entrada para anular este comportamiento en los navegadores que no soportan.

El problema es que - en funcionamiento del jQuery sobre el Opera, así que en Opera estoy recibiendo dos recogedores de fecha de calendario (uno desde el navegador, uno de jQuery)

puedo trabajar alrededor de esto por ahora usando if (window.opera) - pero ¿hay alguna manera usando, por ejemplo, jQuery.support, que pueda detectar de forma fiable si el navegador actual soporta una función particular, HTML5 o no

¿Fue útil?

Solución

Me gustaría echar un vistazo a Modernizr . Es una fuente abierta, biblioteca Javascript licencia del MIT que detecta el apoyo a muchas características HTML5 / CSS3 y es realmente muy pequeña (7 kb comprimido). Para usarlo, simplemente:

<script src="modernizr.min.js"></script> 

Dentro de la <head> del documento. Después de eso, tiene una variedad de funciones para comprobar si lo que necesita. Ejemplo:

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

Hay muchas más formas de comprobar la función específica HTML5 / CSS3 desea. mira su página web conseguirlo y ver los documentos.

Otros consejos

Sí, la comprobación de un navegador en particular no es lo que desea en absoluto. Es útil en ocasiones para detectar cuándo es necesario aplicar soluciones para los errores del navegador (por lo general con IE), pero si quieres saber si un navegador compatible con una función acaba de oler por ello.

Algunas cosas son más fáciles para oler que otros. Para su ejemplo de la fecha de entrada de soporte es muy fácil. La propiedad input.type te dice qué tipo de control el navegador piensa que es; si no son compatibles con entradas de fecha obtendrá 'text'.

<input type="date" class="dateinput" />

if ($('.dateinput')[0].type!=='date') {
     $('.dateinput').addSomeDateScriptingPluginThing();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top