2012-07-05 19 views
11

Tengo una página web que debe mostrarse correctamente en dispositivos móviles. Para hacerlo, cargué la secuencia de comandos de JQuery Mobile en la página. La etiqueta de la cabeza se ve así:Cargar script de JQuery Mobile solo para dispositivos móviles

<head> 
    <title>Page Title</title> 

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" /> 
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 
</head> 

y usados ​​en los elementos del cuerpo de la página el papel atributos de datos para mostrar las cosas. Las páginas se ven bastante bien en los dispositivos móviles, pero se ve de manera similar incluso si la solicitud proviene de un navegador que no es para dispositivos móviles.

Me gustaría saber si alguien conoce un método para cargar la secuencia de comandos de JQuery Mobile solo si la solicitud proviene de un dispositivo móvil.

lo que he tratado hasta ahora es utilizar una función que detectd mi agente de usuario y carga el script si se trata de un dispositivo móvil:

function init() { 

    if(isMobile()) { 
     document.write('<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />'); 
document.write('<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>'); 
dcument.write('<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>'); 
    } 
} 


function isMobile() { 

    if(navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/iPhone|iPad|iPod/i) || navigator.userAgent.match(/IEMobile/i)) 
      return true; 
     return false; 
} 

Respuesta

14

Es difícil de detectar si su dispositivo es móvil o tablet o gran pantalla con tacto, pero para empezar

  1. usar secuencia de comandos de detectar desde http://detectmobilebrowsers.com/
  2. prueba usando http://yepnopejs.com/

como no (debería funcionar para el script de jQuery de http://detectmobilebrowsers.com/):

yepnope({ 
    test : jQuery.browser.mobile, 
    yep : 'mobile_specific.js', 
    nope : ['normal.js','blah.js'] 
}); 

EDIT:

también echar un vistazo a https://github.com/borismus/device.js, para la carga de contenidos basado en condiciones. No estoy seguro de si le permitirá cargar archivos JS condicional.

+0

gracias, aunque la función que encontré para detectar navegadores móviles parece funcionar, detectar celularmente seguramente es mucho mejor :) mi principal problema es cómo cargar scripts de JQuery basados ​​en esa condición :( – giocarmine

+0

utilizar el enlace normal de Javascript provisto en detectmobilebrowser.com – Nachiket

+0

parece que tal vez realmente no necesito hacer una carga condicional de scripts js, así que creo que todos los enlaces que ha proporcionado son más de los que necesito :) ¡gracias de nuevo! – giocarmine

2

¿Qué le parece determinar si usar un diseño móvil basado en el ancho del dispositivo, como lo hacen los marcos CSS como Twitter Bootstrap? De esta manera, puede diseñar para dispositivos pequeños usando jQuery mobile y para otros con vanQue jQuery? Las pruebas con yepNope o similar todavía se aplican, creo.

Cuestiones relacionadas