2010-08-03 7 views

Respuesta

19

Añadir este después de su vista web ha cargado su contenido

[MyWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"]; 
+4

muy útil, que está trabajando. He mencionado que tengo que poner este mensaje en el método delegado webViewDidStartLoad, solo para otras personas que quieran saber – Jack

+1

Esto no funcionó para mí ya que el JS que muestra la alerta se ejecutó antes de que se completara la página. Terminé bloqueándolo en el nivel nativo: http://stackoverflow.com/a/21698251/154915 – ABeanSits

+0

Incluso ponerlo en webViewDidStartLoad no funciona, ya sea – onmyway133

12

Puede enlazar window.alert a otra función. Entonces:

window.alert = function() { 
    //does nothing so effectively "disables" alert 
}; 

Asegúrese de hacerlo antes de llamar a cualquier alerta. Lo bueno de esto es que puede personalizar la forma en que muestra mensajes al usuario. Por lo tanto, puede anular window.alert para iniciar sesión en la consola (con fines de depuración) o puede representarla en la página (con un lightbox o algo similar).

+0

Sí, esto también funciona, gracias – Jack

+0

No hay problema. La respuesta de pop850 es, probablemente, lo que desea aceptar, ya que atiende directamente su inquietud. –

+4

Desde mi punto de vista, esta respuesta aborda el problema con mayor gracia, como 'var a = null; a(); 'es un error de tiempo de ejecución de JavaScript. – LordTwaroog

1

Dado que UIWebView traduce todas las alertas de Javascript en UIAlertViews nativo, es bastante simple bloquearlo en el extremo nativo. Examinando UIAlertView.h, solo hay un método público para mostrar una alerta que se llama convenientemente: - (void)show;.

@interface UIAlertView (Blocker) 
@end 

#import "UIAlertView+Blocker.h" 

@implementation UIAlertView (Blocker) 

- (void)show { 
    return; 
} 
@end 

Puede encontrar la respuesta aquí: https://stackoverflow.com/a/21698251/2377378

Cuestiones relacionadas