Estoy tratando de entender por qué algo con Javascript no funciona dentro de un UIWebView. Que yo sepa, no hay forma de establecer un punto de interrupción dentro de XCode para un archivo js. No hay problema, volveré a 2004 y usaré estadistas de alerta, ¡oh, espera, parece que tampoco funcionan dentro de un UIWebView!
Lo único que se me ocurre es exportar mis archivos HTML y JS a mi escritorio y luego simplemente hacer mi depuración dentro de Safari. Y eso funciona! Pero, por supuesto, el error con el que estoy peleando en UIWebView no ocurre en Safari.
¿Hay alguna otra forma de depurar dentro de un UIWebView, o algún truco que pueda usar para usar el método de alerta de la vieja escuela?
fuente
Settings
>Safari
>Advanced
>Web Inspector
<- activar estaEsta consulta encabeza Google, por lo que vale la pena vincularla al RemoteInspector oculto en iOS5 , con mucho, la mejor forma encontrada hasta ahora para depurar sus UIWebViews, solo compilación condicional antes de enviar a Apple.
fuente
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
Recuerda eliminar la llamada cuando compiles para liberar!alert () ciertamente funciona para mí.
Sin embargo, también puede hacer muchas otras cosas, como crear su propia alerta DHTML que aparece en una capa. Esto puede ser bueno porque puedes hacer múltiples alertas a un solo div, sin detener tu aplicación. También debe poder escribirle un seguimiento de la pila (el seguimiento de la pila está en el objeto de excepción, y siempre puede lanzar sus propias excepciones).
Alternativamente, si se ejecuta en el simulador, su "alert ()" personalizada podría llamar al objetivo C y mostrar la cadena en la ventana de la consola del simulador de iPhone:
y en el lado objetivo C:
Dicho esto, tengo una aplicación que es pesada en el material UiWebView / javascript, y tiendo a hacer la mayoría de los desarrolladores de javascript en Chrome (simulando lo que es necesario desde el entorno del iPhone)
fuente
Espero que sea de ayuda.
Paso 1: Abre Safari VC en tu Mac (jajaja No pongas cara, si lo digo en tu Macbook solo sigue mis pasos)
Paso 2: ve a las preferencias de Safari y haz clic en Avanzar. Obtendrá esta configuración en la pantalla de su MacBook.
Ahora habilite el menú Mostrar para desarrollar en la barra de menú. Ahora todo su trabajo está hecho. ¿Estás pensando que estoy bromeando: P: P ningún hombre ...
Paso 3: Ejecute su aplicación en Dispositivo o Simulador. (No piense simplemente ejecute) Y vaya a su aplicación donde está abriendo su Webview o SFSafariViewController. Hasta ahora no entendiste lo sé. Sé genial y mira mi próximo paso.
Paso 4: Abra Safari en su MacBook y haga clic en la opción Desarrollar en la barra de menú. ¿Recibió algo que su MacBook, iPad / iPhone muestra correctamente?
Paso 5: Hecho. haga clic en su dispositivo y haga clic en URL. Aparecerá una nueva ventana emergente como esta.
Paso 6: ¿qué estás buscando ahora? Aquí están todos los pasos.
IMP: no olvide habilitar la siguiente imagen
fuente
Todavía no he probado esto, pero mira este Weinre
Se ve muy prometedor.
fuente
Esta es una vieja pregunta. Pero todavía me gustaría compartir mis dos centavos.
He estado usando jsconsole.com para la depuración remota. Es fácil. Solo incluya una etiqueta de script y use registros de consola para depurar imprimiendo. Esto también se puede usar para depurar en un dispositivo real.
fuente
Antigua pregunta, pero creo que encontré la mejor solución, en mi caso necesita depurar uiwebview, pero no tenía acceso a la aplicación IOS y solo al contenido html y tuve que ver algunos registros JS, agregué el siguiente código cargar el light firebug JS y mostrarlo automáticamente:
llamándolo desde JS
o cargarlo desde html
fuente
Puede configurar un sistema como el utilizado en PhoneGap para enviar mensajes desde JavaScript a Objective-C e iniciar sesión desde allí. En pocas palabras, están configurando document.location con un esquema personalizado y bloqueando ese esquema en la devolución de llamada delegada.
Puede aprovechar el hecho de que un UIWebView es la mayoría de los delegados para un WebView. WebKit está técnicamente indocumentado para iPhone, pero en su mayoría es el mismo que se especifica en los encabezados de escritorio de WebKit, posiblemente incluyendo el objeto WebScript. Lo uso para la depuración, pero asegúrese de eliminar este código antes de enviarlo a Apple.
Para obtener un WebView desde un UIWebView, implemente un método delegado como
-(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame
en una subclase de UIWebView. Llama a super si usas esa.fuente