我有一个应用程序可以打开各种域名的网页。其中一些域具有嵌入式脚本,可显示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但不幸的是,这不是各种约束的选项。
答案 0 :(得分:1)
为什么不使用WKWebView? WKWebView挂钩JS的警报,默认情况下不执行任何操作。
供参考:
如果要在调用JS的警报时显示警报,请实施WKUIDelegate的
webView(webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: () -> Void)
并自己显示对话框。