0

我希望在我的应用程序中不要在 Web 视图中打开某些特定站点。那么我们可以以这种方式限制任何网站吗?我想再添加一件事,我想完全限制网站而不是任何特定页面。提前致谢。

4

2 回答 2

1

是的,您可以在此 UIWebview 委托方法中阻止页面加载。请记住将类设置为 webviews 委托。webView.delegate = self;, 并且类需要是UIViewController <UIWebViewDelegate>

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL.absoluteString rangeOfString:@"google"].length != 0) {
        // maybe show a UIAlertView to indicate the page is blocked?
        return NO;  
    }else {
        return YES;
    }
}

编辑:现在它检查 URL 中是否提到了 google,如果它包含 Google,则阻止它

于 2012-10-23T08:12:10.370 回答
0

一点改进:将要阻止的网站保存在 NSArray 中:

NSArray *restrictedSites = [NSArray arrayWithObjects:@"http://www.google.com", @"http://www.google.co.uk", nil];

现在检查请求的网站是否是受限制的网站之一:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *site = request.URL.absoluteString

    for(NSString *str in restrictedSites)
    {
        if ([site isEqualToString:str]) 
        {
            return NO;
        }
    }
    return YES;
}

或者,您可以检查请求的网站是否包含 URL。在以下情况下,所有包含“http://www.google”或“http://www.apple”的网址都将被屏蔽:

首先创建受限站点数组:

NSArray *restrictedSites = [NSArray arrayWithObjects:@"http://www.google", @"http://www.apple", nil]; 

现在检查请求的网站是否包含受限制的网站之一(没有 .com 或 .co.uk 等...):

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *site = request.URL.absoluteString

    for(NSString *str in restrictedSites)
    {
        if ([site rangeOfString:str].location != NSNotFound) 
        {
            return NO;
        }
    }
    return YES;
}

所以在这里,所有的http://www.google.comhttp://www.google.frhttp://www.google.co.uk都会被屏蔽。

于 2012-10-23T08:56:51.603 回答