2016-05-18 134 views
0

我有一个应用程序可以打开来自各种域的网页。其中一些域内嵌有脚本,可显示诸如You're the 1 millionth visitor to this website. You won >>nothing<<"之类的警报。阻止UIWebView警报

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

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

某些崩溃报告表明从shouldStartLoadWithRequest调用webView stringByEvaluatingJavaScriptFromString:...会导致应用程序崩溃。并不总是,有时候。任何想法为什么这可能是?

有没有一种方法可以在不进行手动劫持的情况下首先防止警报显示?我很喜欢使用SFSafariViewController,但不幸的是,这不是各种约束的选项。

回答

1

为什么不使用WKWebView?WKWebView挂钩JS的警报,默认情况下什么也不做。

FYI: 如果你想显示警报时JS的警报被调用时,由自己实现WKUIDelegate的

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

,并显示对话框。

+0

啊,不知道WKWebView做到了,那真的很酷!也就是说,WKWebView也是我正在处理的一个约束,所以虽然你的答案很有帮助,但我无法使用它。 –