限制 UIWebView 留在 Facebook 页面上
Posted
技术标签:
【中文标题】限制 UIWebView 留在 Facebook 页面上【英文标题】:Restrict UIWebView to stay on Facebook page 【发布时间】:2013-02-25 11:13:18 【问题描述】:我需要为 iPad 制作一个简单的 UIWebView,以便用户使用他们的帐户登录并能够看到固定的 Facebook 公共页面并能够滚动此页面、评论或喜欢帖子但无法前往除了这个页面之外的其他地方。所以我正在使用
-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
NSRange range = [urlString rangeOfString:@"http://m.facebook.com/groups/10621329941138"];
if (range.location != NSNotFound)
return YES;
else
return NO;
每次用户结束会话时,女主人都会从该页面注销到登录页面。经过一些实验后,我遇到了一些问题:
在第一次加载时,我收到“您请求的页面现在无法显示...”http://uaimage.com/image/5a0cccea 每次注销都会导致白屏(.php 有问题?) 如果我要阻止此页面的所有链接,我如何在会话结束时允许注销操作?提前致谢!
【问题讨论】:
【参考方案1】:试试这个:
if ([url.host.lowercaseString rangeOfString:@"facebook"].location == NSNotFound)
// Don't go since we're somewhere else now
return NO;
else
// We can go here
return YES;
【讨论】:
效果和以前一样。我有这个“您请求的页面......”。会是什么? 我好像有一个大写的 F,试试小写的“facebook”,看看是否有帮助... 即使这样可行,它也可能相当不安全,因为任何其他网站都可以将关键字“facebook”放在其路径中,并允许它继续加载。 你的意思是它的主机......问题是Facebook使用外部服务器来托管javascript和其他元素,所以很难停止加载......您也可以尝试仅在@时检查URL 987654322@ 仅检查用户是否启动了新页面加载... jjv360 看起来你是对的,因为直到现在我所有的尝试都没有成功【参考方案2】:我以前做过类似的事情,我会建议类似的事情
return [urlString hasPrefix:@"http://m.facebook.com/"];
这也可能是一个更安全的选择,因为它仅限于域,而不仅仅是在完整 URL 路径中的任何位置对单词 facebook 进行关键字检查。
您可以花点心思,在“http://”之后和第二个“/”之前的任何地方检查“facebook.com”。也可以使用 NSURL 的 baseURL 方法来提供帮助。
另外,您确定您的 UIWebView 委托设置正确吗?
【讨论】:
以上是关于限制 UIWebView 留在 Facebook 页面上的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIWebView 中使用 Facebook 评论插件
尝试在 UIWebView 中加载 Facebook 评论插件
在 UIWebView 中打开 facebook 页面墙的 URL 不起作用