2010-08-03 3 views

Antwort

19

Fügen Sie diese nach Ihrer Web-Ansicht hat seinen Inhalt kann

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

Sehr hilfreich ist es funktioniert. Ich habe erwähnt, dass ich diese Nachricht in webViewDidStartLoad Delegate-Methode, nur für andere Leute, die wissen möchten, setzen möchte – Jack

+1

Dies funktioniert nicht für mich seit der JS, die die Warnung wurde vor dem Rendern der Seite ausgeführt ausgeführt. Ich blockte es auf der nativen Ebene: http://StackOverflow.com/a/21698251/154915 – ABeanSits

+0

Sogar in webViewDidStartLoad funktioniert nicht, entweder – onmyway133

12

Sie window.alert an eine andere Funktion binden geladen. Also:

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

Stellen Sie sicher, dass Sie dies tun, bevor Sie irgendwelche Warnungen aufrufen. Das Schöne daran ist, dass Sie die Art und Weise anpassen können, wie Sie dem Benutzer Nachrichten anzeigen. Sie können also window.alert überschreiben, um sich an der Konsole anzumelden (zu Debugging-Zwecken), oder Sie können es auf der Seite rendern (mit einem Leuchtkasten oder etwas Ähnlichem).

+0

Ja, das funktioniert auch, danke – Jack

+0

Kein Problem. Die Antwort von pop850 ist wahrscheinlich die, die Sie akzeptieren möchten, da sie Ihr Anliegen direkt anspricht. –

+4

Aus meiner Sicht adressiert diese Antwort das Problem besser als 'var a = null; a(); 'ist ein JavaScript-Laufzeitfehler. – LordTwaroog

1

Da eine UIWebView alle Javascript-Warnungen in native UIAlertViews übersetzt, ist es ziemlich einfach, es am nativen Ende zu blockieren. Wenn Sie UIAlertView.h betrachten, gibt es nur eine öffentliche Methode zum Anzeigen einer Warnung, die bequemerweise - (void)show; genannt wird.

@interface UIAlertView (Blocker) 
@end 

#import "UIAlertView+Blocker.h" 

@implementation UIAlertView (Blocker) 

- (void)show { 
    return; 
} 
@end 

Sie die Antwort finden Sie hier: https://stackoverflow.com/a/21698251/2377378