La detección de características (también pruebas de características ) es una técnica utilizada en el desarrollo web para manejar las diferencias entre los entornos de ejecución (normalmente, navegadores web o agentes de usuario ), mediante la prueba programática de pistas de que el entorno puede ofrecer o no determinadas funciones. Luego, esta información se utiliza para hacer que la aplicación se adapte de alguna manera al entorno: para hacer uso de ciertas API o para adaptarla para una mejor experiencia de usuario. [ cita requerida ]
Sus defensores afirman que es más confiable y preparado para el futuro que otras técnicas como el rastreo de agentes de usuario y los hacks CSS específicos del navegador. [ cita requerida ]
Técnicas
Una prueba de características puede adoptar muchas formas. Básicamente, es cualquier fragmento de código lo que da cierto nivel de confianza de que una característica requerida es realmente compatible. Sin embargo, a diferencia de otras técnicas, la detección de características generalmente se enfoca en realizar acciones que se relacionan directamente con la característica que se va a detectar, en lugar de heurísticas . [ cita requerida ]
Como JavaScript es el lenguaje de secuencias de comandos más frecuente en los navegadores web [ cita requerida ] , muchas técnicas de detección de características utilizan JavaScript para inspeccionar el DOM y el entorno JavaScript local.
La técnica más simple es verificar la existencia de un objeto o propiedad relevante. Por ejemplo, la API de geolocalización (utilizada para acceder al conocimiento del dispositivo sobre su ubicación geográfica, posiblemente obtenida de un dispositivo de navegación GPS ) expone una geolocation
propiedad sobre el navigator
objeto en el DOM; cuya presencia implica que se admite la API de geolocalización:
if ('geolocalización' en el navegador) { // Se admite la API de geolocalización}
Para un mayor nivel de confianza, algunas pruebas de funciones intentarán invocar la función y luego buscarán pistas de que se comportó correctamente. Por ejemplo, una prueba de compatibilidad con cookies puede intentar establecer un valor como cookie y luego verificar que se pueda leer.
Indetectables
Algunas funciones del navegador se consideran indetectables , porque no se conocen pistas que den la suficiente confianza en que una función es compatible. A menudo, esto se debe a que la información disponible para el entorno JavaScript en el navegador es limitada; En general, las características deben exponerse a través del DOM de alguna manera para que sean detectables mediante JavaScript.
Cuando se encuentran elementos indetectables, es común recurrir al rastreo de agentes de usuario como un mecanismo alternativo, o emplear codificación defensiva para minimizar el impacto si la función resulta no ser compatible.
El proyecto Modernizr mantiene un registro de indetectables conocidos en su wiki .