2011-06-27 18 views

Respuesta

19

¿Estás utilizando Javascript en la página que estás cargando?

Específicamente, ¿Está utilizando el método

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 

Como el estado docs la siguiente

tiempo de ejecución JavaScript está limitado a 10 segundos para cada punto de entrada de nivel superior. Si el script se ejecuta durante más de 10 segundos, la vista web deja de ejecutar la secuencia de comandos

Y esto parece para empatar con el mensaje de error que está viendo en la consola

+1

im trabajando en una aplicación de Twitter. La vista web carga la página de inicio de sesión de Twitter. Después de ingresar mis credenciales y hacer clic en "Autorizar aplicación", mi controlador de vista modal se cierra pero los botones de la vista de fondo están atascados. –

+0

¿Puede publicar alguno de sus códigos para tener una mejor idea de cómo ha implementado las cosas? Por ejemplo, ¿activa/desactiva manualmente los botones en la vista de fondo y, de ser así, está utilizando los métodos delegados de webView para gestionar esto? –

+0

He resuelto el problema. Había una vista de fondo que no se eliminaba después de descartar el controlador de vista modal. De todos modos, gracias a micpringle por tu respuesta. –

3

Fwiw, parece que mi especial se agotó el tiempo de espera debido a un error de javascript en escenarios raros. Puede tratar de envolver su JS en un try/catch o mejorarlo para que sea más tolerante a errores.


Más detalles: que estaba usando la siguiente cadena JS:

NSString* js = @"document.getElementById(\"main\").offsetHeight"; 
int height = [[_web_view stringByEvaluatingJavaScriptFromString:js] intValue]; 

yo sabía que este problema UIWebView podría suceder si la vista web no estaba totalmente cargado (por ejemplo, JS llamada antes de que el webViewDidFinishLoad.: método, por lo que supuso que tal vez el objeto "principal" faltaba por lo tanto, he modificado mis JS a la siguiente y funcionó:..

NSString* js = @"document.getElementById(\"main\") ? document.getElementById(\"main\").offsetHeight : -1"; 
+0

Hmmm esto parece interesante, ¿alguien más puede pensar que esto ayuda a resolver el problema? –

0

a continuación fragmento de código que funcionó para mí

if(!webview.isLoading) 
{ 
    // update your code. 
} 
0

Intenta usar WKWebView en lugar de UIWebView. Esto funciona para mí.

En mi caso, trato de usar UIWebView para abrir PDF locales. Algunos de los PDF pueden contener algún código JS. Luego me encuentro con este problema.

Después de usar WKWebView, todo funciona perfecto

Apple también recomienda utilizar WKWebView si su aplicación que se ejecuta en iOS 8 y posterior

Cuestiones relacionadas