2011-09-13 7 views

Respuesta

2

Puede usar jQuery Mobile en webviews, o un SDK multiplataforma como PhoneGap que creará webviews para usted.

+0

Gracias. Quiero mas explicacion Los pasos principales. – cyberworld

0

Sí, puedes. Puede usar JQuery Mobile. Considere su aplicación y la arquitectura de su aplicación y qué es lo que está tratando de lograr antes de comenzar. Si desea crear una "aplicación web", escrita en HTML, JQuery/Javascript y CSS, que se representará dentro del navegador Safari de iPhone, puede "ajustar" su aplicación web en una aplicación de iPhone "nativa" que se puede descargar e instalado en el iPhone desde App Store. Consulte el JQuery Mobile documentation desde su dispositivo móvil (iPhone) y vea qué opciones son posibles. Recomiendo comenzar con "Páginas & Diálogos/Anatomía de una página", en el documento para iniciar la "aplicación web". Puede usar PhoneGap para crear la aplicación Objective-C, XCode que se enviará a Apple. Puede comenzar con Safari Development here.

2

Si desea utilizar jQuery en una URL remota dentro de un UIWebView se puede inyectar usando stringByEvaluatingJavaScriptFromString

Aquí hay dos métodos para hacer eso, he optado por la segunda:

1. Cargar jQuery remota desde googleapis.com

Nota: el parámetro andJS: puede ser una copia de seguridad de vainilla JS en caso de que no se carga jQuery:

- (void)injectJQuery:(NSString *)jQuery andJS:(NSString *)js { 
    // Load jQuery from googleapis.com 
    NSString *jsString = @"function loadJQuery(e){try{if(typeof jQuery=='undefined'||typeof jQuery.ui=='undefined'){var t=10;var n=0;var r=document.getElementsByTagName('head')[0];var i=document.createElement('script');i.type='text/javascript';i.src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';r.appendChild(i);checkjQueryLoaded=setInterval(function(){if(t<n){window.clearInterval(checkjQueryLoaded)}n++},300);n=0;checkLoaded=setInterval(function(){if(typeof jQuery!='undefined'){window.clearInterval(checkLoaded);e(true)}else if(t<n){window.clearInterval(checkLoaded);e(false)}n++},500)}}catch(s){e(false)}}loadJQuery(function(e){if(e){__JQUERY__}else{__JS__}})"; 
    jsString = [jsString stringByReplacingOccurrencesOfString:@"__JQUERY__" withString:jQuery]; 
    jsString = [jsString stringByReplacingOccurrencesOfString:@"__JS__" withString:js]; 
    [self.webView stringByEvaluatingJavaScriptFromString:jsString]; 
} 

El único inconveniente de esto es que tarda un segundo antes de que se cargue jQuery desde Google. Esto no era aceptable para mi situación, así que utiliza este lugar:

2. Cargar jQuery localmente desde su mainBundle (solución mejor creo)

crear un nuevo archivo llamado jquery.js; pegue los contenidos de jQuery en él; asegúrese de que se haya agregado al Copiar recursos del paquete en Fases de compilación; entonces ...

- (void)injectJQuery:(NSString *)jQuery { 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"jquery" ofType:@"js"]; 
    NSString *jsString = [NSString stringWithContentsOfFile:path 
                encoding:NSUTF8StringEncoding 
                error:NULL]; 
    jsString = [jsString stringByAppendingString:jQuery]; 
    [self.webView stringByEvaluatingJavaScriptFromString:jsString]; 
} 
Cuestiones relacionadas