我正在使用UIWebView
来加载URL。UIWebView:我可以禁用任何网页内的javascript alert()吗?
在该网页的页面中,它使用alert("whatever msg")
作为JavaScript。我的UIWebView
会弹出一个窗口并显示警报消息。
有没有办法禁用这种弹出式窗口或JavaScript警报窗口?
我正在使用UIWebView
来加载URL。UIWebView:我可以禁用任何网页内的javascript alert()吗?
在该网页的页面中,它使用alert("whatever msg")
作为JavaScript。我的UIWebView
会弹出一个窗口并显示警报消息。
有没有办法禁用这种弹出式窗口或JavaScript警报窗口?
您的Web视图后,添加此加载其内容
[MyWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"];
可以绑定window.alert
到另一个功能。所以:
window.alert = function() {
//does nothing so effectively "disables" alert
};
请确保在调用任何警报之前执行此操作。整洁的事情是你可以自定义向用户显示消息的方式。因此,您可以覆盖window.alert
以登录到控制台(用于调试目的),或者您可以在页面上呈现它(使用lightbox或类似的东西)。
是的,这也适用,谢谢 – Jack 2010-08-03 20:44:37
没问题。 pop850的答案可能是你想要接受的,因为它直接解决了你的问题。 – 2010-08-03 20:46:24
从我的角度来看,这个答案更加优雅地解决了这个问题,因为'var a = null; a();'是一个JavaScript运行时错误。 – LordTwaroog 2013-01-18 15:25:33
由于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
非常有帮助的,这是工作。 我已经提到过,我必须将此消息放入webViewDidStartLoad委托方法中,仅用于其他可能想知道的人 – Jack 2010-08-03 20:44:18
由于显示警报的JS在完成页面呈现之前已执行,所以这对我无效。我结束了在本机级别阻止它:http://stackoverflow.com/a/21698251/154915 – ABeanSits 2014-02-11 09:48:38
即使把它放在webViewDidStartLoad不起作用,要么 – onmyway133 2014-02-19 07:13:22