iOS UIWebView,如何阻止某个URL模式加载?

时间:2015-06-24 18:31:03

标签: javascript ios objective-c filter uiwebview

我有一个带有Web视图控制器的iOS应用程序,它是Web视图的委托。 我希望我的UIWebView永远不会显示具有某个关键字或网址的一部分的网址。(在我的情况下,我想阻止来自应用服务器的误导性错误页面,该页面可能出现在对任何请求的回应)。

我正在听这些事件:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {}
-(void)webViewDidFinishLoad:(UIWebView *)webView{}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {}

我不确定听这些事件是否足以确保所有内部页面重定向(包括javascript的重定向)都会被检查,并且将阻止加载违规网址。

如何创建永远不会显示某个页面的UIWebView?

1 个答案:

答案 0 :(得分:4)

您可以检查关键字是否在请求的URL中,并通过返回false来停止加载页面。我假设您要查找的关键字将在URL中?我们假装它是 errorPage

-(BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *requestedURL = request.URL
    NSString *stringCheck = requestedURL.absoluteString;
// This is the important part--check if errorPage is in the URL.
    NSRange range = [urlString rangeOfString:@"errorPage"];
    if (range.location == NSNotFound) 
        return YES;
    else
        return NO;
}