2012-06-07 64 views
1

我有一个UIWebview,它加载了一个特定的网站部分(新闻)。我想阻止用户访问网站的其他部分,这意味着他们应该只留在新闻部分/阅读PDF文章。iOS UIWebView - 限制HTML路径

我已经构建了一组代码,但由于某些技术限制,可悲的是无法对它们进行测试。下周只能访问它。不过,我认为现在是时候在这里问一下,让高级用户查看我的草案代码,看看它是否可行。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *urlAddress = @"http://www.imc.jhmi.edu/news.html"; 
    NSURL *url =[NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:requestObj]; 

    //finding current url and lead it back if it strayed off 
    NSString *currentURL = webView.request.URL.absoluteString; 
    NSRange range1 = [currentURL rangeOfString:@"news"]; 
    NSRange range2 = [currentURL rangeOfString:@"pdf"]; 

我应该使用

if (range1.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    [webView reload]; 
    }else if (range2.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    [webView reload]; 
    } 

} 

还是这一套代码?

if (range1.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    url = [NSURL URLWithString:currentURL 
    [webView loadRequest:[NSURLRequest requestWithURL:url]]; 
    }else if (range2.location ==NSNotFound){ 
    currentURL = @"http://www.imc.jhmi.edu/news.html"; 
    url = [NSURL URLWithString:currentURL 
    [webView loadRequest:[NSURLRequest requestWithURL:url]]; 
    } 

并且有没有代码的问题?如果是的话,请指出为什么它不起作用,因为我还处于学习阶段。在这个阶段将是一个学习更多的好机会。我正在寻找的逻辑是它会加载最初的新闻部分。 UIWebView应该只显示那里的新闻部分/ PDF文章。如果用户尝试去其他路径,它应该检测当前的URL并将它们重定向回新闻部分。

回答

4

要限制某些网址的负荷做以下

webView.delegate = self; 

,并添加以下功能

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = [[request URL]absoluteString]; 
    if(ulrString == @"restricted ur") 
      return NO; //Restrict 
    else 
      return YES; //Allow 
} 
+0

嗯,我得到了自己代表的一部分。但是第二部分,我可以反转它,并包括NSRange?如果它包含urlstring中的news或pdf,则返回YES以允许,那么其他所有内容都将返回NO // restrict。因为即时消息限制除了新闻部分/文章加载的一切。希望我说的是有道理的 –

+0

是的,当然你可以做到这一点,我做了很多次,它的工作 –

+0

当然:)我会试试它最新的星期一,让我的工作站。顺便说一句,如果我使用你的功能,我可以删除我的代码集,只包括第一部分? –