阻止UIWebView警报

时间:2016-05-18 17:31:46

标签: javascript ios uiwebview popup alert

我有一个应用程序可以打开各种域名的网页。其中一些域具有嵌入式脚本,可显示You're the 1 millionth visitor to this website. You won >>nothing<<"等警报。

我决定劫持window.alert方法调用,什么都不做,以免上述网站显示恶意警报。

我阻止了- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType- (void)webViewDidFinishLoad:(UIWebView *)webView中的提醒,以防止网站在网页加载完成之前显示提醒。

某些崩溃报告表明从webView stringByEvaluatingJavaScriptFromString:...调用shouldStartLoadWithRequest会导致应用崩溃。并非总是如此。知道为什么会这样吗?

有没有办法在不进行手动劫持的情况下首先阻止警报显示?我很乐意使用SFSafariViewController但不幸的是,这不是各种约束的选项。

1 个答案:

答案 0 :(得分:1)

为什么不使用WKWebView? WKWebView挂钩JS的警报,默认情况下不执行任何操作。

供参考:

如果要在调用JS的警报时显示警报,请实施WKUIDelegate的

webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void) 

并自己显示对话框。