iOS 7 UIWebView拦截警报
在我的应用程序中,有一个显示网页的UIWebView。它有时会在UIAlertView中显示一些非常恼人的错误。我想截取这个,并以更复杂的方式显示错误 是否有一种方法可以截获函数中的错误消息,并自行决定如何处理它 提前谢谢 这似乎可以做到:iOS 7 UIWebView拦截警报,ios,uiwebview,ios7,Ios,Uiwebview,Ios7,在我的应用程序中,有一个显示网页的UIWebView。它有时会在UIAlertView中显示一些非常恼人的错误。我想截取这个,并以更复杂的方式显示错误 是否有一种方法可以截获函数中的错误消息,并自行决定如何处理它 提前谢谢 这似乎可以做到: - (void)webViewDidFinishLoad:(UIWebView *)webView { JSContext *ctx = [webView valueForKeyPath:@"documentView.webView.mainFram
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
JSContext *ctx = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
ctx[@"window"][@"alert"] = ^(JSValue *message) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"JavaScript Alert" message:[message toString] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
};
}
注意:仅在iOS 8上测试。如果是来自
UIWebView
的错误,则应先点击webView:didFailLoadWithError:
。您可能可以在这里执行某些操作。页面加载完美,它只是在alertview中显示错误。我认为这只是简单地使用javascript警报功能。到时候您将不得不提供更多信息。你所添加的内容还不足以让人信服。错误是否与javascript有关,或者是您的站点实际返回错误,并且系统正在显示它;Zoltan,不,您只能截取页面加载和超链接(WebViewDelegate应该是StartLoadWithRequest)。如果您可以控制web内容,则可以重新设计alert()javascript调用,使其看起来更复杂