处理WebView中的“高级”错误

时间:2013-02-26 08:37:25

标签: cocoa error-handling webview

有没有办法在WebView中处理不同的HTML错误?如:找不到链接的CSS文件,发生了一些JS或DOM错误。

webView:didFailLoadWithError:forFrame:无法处理它们(我相信自收到webView:didFinishLoadForFrame:和其他消息后我正确设置了委托)。

1 个答案:

答案 0 :(得分:0)

要在找不到诸如css文件之类的资源时收到通知,请设置您的网络浏览的WebResourceLoadDelegate

self.webView.resourceLoadDelegate = self;

并实现此委托方法:

- (void)webView:(WebView *)webView resource:(id)identifier didFailLoadingWithError:(NSError *)error fromDataSource:(WebDataSource *)dataSource {
    NSLog(@"Error loading resource : %@", error);
}

该错误将包括webview无法加载的资源的名称和路径。

要查看javascript引发的错误,请设置WebUIDelegate

self.webView.UIDelegate = self;

并实现此私有API委托方法(注意:您的应用程序可能不应该依赖此方法,因为它来自私有API)

- (void)webView:(WebView *)webView addMessageToConsole:(NSDictionary *)message {
    NSLog(@"Javascript error : %@",message);
}