2010-08-03 61 views

回答

19

您的Web视图后,添加此加载其内容

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

非常有帮助的,这是工作。 我已经提到过,我必须将此消息放入webViewDidStartLoad委托方法中,仅用于其他可能想知道的人 – Jack 2010-08-03 20:44:18

+1

由于显示警报的JS在完成页面呈现之前已执行,所以这对我无效。我结束了在本机级别阻止它:http://stackoverflow.com/a/21698251/154915 – ABeanSits 2014-02-11 09:48:38

+0

即使把它放在webViewDidStartLoad不起作用,要么 – onmyway133 2014-02-19 07:13:22

12

可以绑定window.alert到另一个功能。所以:

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

请确保在调用任何警报之前执行此操作。整洁的事情是你可以自定义向用户显示消息的方式。因此,您可以覆盖window.alert以登录到控制台(用于调试目的),或者您可以在页面上呈现它(使用lightbox或类似的东西)。

+0

是的,这也适用,谢谢 – Jack 2010-08-03 20:44:37

+0

没问题。 pop850的答案可能是你想要接受的,因为它直接解决了你的问题。 – 2010-08-03 20:46:24

+4

从我的角度来看,这个答案更加优雅地解决了这个问题,因为'var a = null; a();'是一个JavaScript运行时错误。 – LordTwaroog 2013-01-18 15:25:33

1

由于UIWebView将所有Javascript警报转换为本机UIAlertViews,因此在本机端将其屏蔽是相当简单的。纵观UIAlertView.h,只有一种显示警报的公开方法,方便地称为:- (void)show;

@interface UIAlertView (Blocker) 
@end 

#import "UIAlertView+Blocker.h" 

@implementation UIAlertView (Blocker) 

- (void)show { 
    return; 
} 
@end 

您可以在这里找到答案:https://stackoverflow.com/a/21698251/2377378

相关问题