¿Existe una forma sólida de detectar si un usuario está utilizando un dispositivo móvil en jQuery? ¿Algo similar al atributo CSS @media? Me gustaría ejecutar un script diferente si el navegador está en un dispositivo de mano.
La función jQuery $.browser
no es lo que estoy buscando.
Lo que estás haciendo al querer detectar un dispositivo móvil es acercarse demasiado al concepto de "husmeo del navegador", en mi opinión. Probablemente sería mucho mejor hacer una detección de características. Bibliotecas como http://www.modernizr.com/ pueden ayudar con eso.
Por ejemplo, ¿dónde está la línea entre móvil y no móvil? Cada día es más borrosa.
No es jQuery, pero encontré esto: http://detectmobilebrowser.com/
Proporciona scripts para detectar navegadores móviles en varios lenguajes, uno de los cuales es JavaScript. Eso puede ayudarte con lo que buscas.
Sin embargo, ya que estás usando jQuery, es posible que quieras estar al tanto de la colección jQuery.support. Es una colección de propiedades para detectar las capacidades del navegador actual. La documentación está aquí: http://api.jquery.com/jQuery.support/
Como no sé qué es exactamente lo que estás tratando de lograr, no sé cuál de estos será el más útil.
Dicho esto, creo que tu mejor opción es redirigir o escribir un script diferente a la salida utilizando un lenguaje del lado del servidor (si es una opción). Dado que usted no sabe realmente las capacidades de un navegador móvil x, haciendo la detección, y la lógica de alteración en el lado del servidor sería el método más fiable. Por supuesto, todo esto es un punto discutible si no se puede utilizar un lenguaje del lado del servidor :)
Si no te preocupan especialmente las pantallas pequeñas, puedes utilizar la detección de anchura/altura. Así, si la anchura está por debajo de un determinado tamaño, el sitio móvil se lanza hacia arriba. Puede que no sea la forma perfecta, pero probablemente será la más fácil de detectar para múltiples dispositivos. Puede que tengas que poner uno específico para el iPhone 4 (de gran resolución).