2010-08-03 11 views

risposta

19

Aggiungere questo dopo la visualizzazione Web ha caricato il suo contenuto

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

Molto utile, si sta lavorando. Ho detto che devo mettere questo messaggio nel metodo delegato webViewDidStartLoad, solo per altre persone che potrebbero voler sapere – Jack

+1

Questo non ha funzionato per me dal momento che il JS che mostra l'avviso è stato eseguito prima del rendering della pagina completata. Ho finito per bloccarlo a livello nativo: http://stackoverflow.com/a/21698251/154915 – ABeanSits

+0

Anche metterlo in webViewDidStartLoad non funziona, sia – onmyway133

12

È possibile associare window.alert a un'altra funzione. Quindi:

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

Assicurarsi di farlo prima di chiamare qualsiasi avviso. La cosa bella di questo è che puoi personalizzare il modo in cui visualizzi i messaggi all'utente. Quindi è possibile sovrascrivere window.alert per accedere alla console (a scopo di debug) o renderlo disponibile sulla pagina (con una lightbox o qualcosa di simile).

+0

Sì, anche questo funziona, grazie – Jack

+0

Nessun problema. La risposta di pop850 è probabilmente ciò che si desidera accettare poiché affronta direttamente la tua preoccupazione. –

+4

Dal mio punto di vista questa risposta risolve il problema con più garbo, come 'var a = null; a(); 'è un errore di runtime JavaScript. – LordTwaroog

1

Poiché uno UIWebView converte tutti gli avvisi di Javascript in nativo UIAlertViews è abbastanza semplice bloccarlo sul lato nativo. Esaminando lo UIAlertView.h c'è un solo metodo pubblico per mostrare un avviso che è convenientemente chiamato: - (void)show;.

@interface UIAlertView (Blocker) 
@end 

#import "UIAlertView+Blocker.h" 

@implementation UIAlertView (Blocker) 

- (void)show { 
    return; 
} 
@end 

È possibile trovare la risposta qui: https://stackoverflow.com/a/21698251/2377378

Problemi correlati