我正在使用UIWebView
加载网址。
在该网址的页面中,它使用alert("whatever msg")
作为JavaScript。我的UIWebView
会弹出一个窗口并显示该警告信息。
有没有办法禁用这种弹出窗口或JavaScript警报窗口?
答案 0 :(得分:19)
在您的网络视图加载其内容后添加此内容
[MyWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"];
答案 1 :(得分:12)
您可以将window.alert
绑定到另一个函数。所以:
window.alert = function() {
//does nothing so effectively "disables" alert
};
确保在拨打任何提醒之前执行此操作。关于这一点的好处是你可以自定义向用户显示消息的方式。因此,您可以覆盖window.alert
以登录控制台(用于调试目的),或者您可以在页面上呈现它(使用灯箱或类似的东西)。
答案 2 :(得分: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
答案 3 :(得分:0)
let script = """
window.alert=window.confirm=window.prompt=function(n){},
[].slice.apply(document.querySelectorAll('iframe')).forEach(function(n){if(n.contentWindow != window){n.contentWindow.alert=n.contentWindow.confirm=n.contentWindow.prompt=function(n){}}})
"""
webView.evaluateJavaScript(script, completionHandler: nil)