如何在iOS中的Safari中加载WebView和所有www页面加载.html页面?

时间:2015-01-20 08:01:14

标签: ios objective-c webview

我是iOS开发中的新手我将我的HTML数据加载到WebView但有时它只包含href链接作为.html链接和一些时间网站链接如www.google.co.in所以我想只加载html数据到Webview和任何网站都加载到Safari中,因为我编写了像

这样的代码
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *link = [[request URL] relativeString];
if ([link isEqualToString:@"module1learningobjectives.html"])
{
    return NO;
}
else
{
    [[UIApplication sharedApplication] openURL:[request URL]];
    return YES;
}
return YES;
}

然后它在网页视图中加载.html文件,但网站在safari和Webview中打开我想只有网站在safari中打开,请给我解决方案。

3 个答案:

答案 0 :(得分:1)

我做这样的事情:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog("URL is %@, and has an extension of %@", request.URL, [request.URL pathExtension]);

    if ([[request.URL pathExtension] isEqualToString:@".html"])

        return YES;
    return NO;
}

这是你要问的吗?

如果您希望将Safari用于非文件和您自己的WebView for文件,请尝试以下操作:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ( ! ([request.URL isFileURL]) ) {
        [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }

    return YES;
}

答案 1 :(得分:0)

只需将代码修改为以下代码即可。

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (navigationType == UIWebViewNavigationTypeLinkClicked)
    {
        NSString *strLink=request.URL.absoluteString;
        if([strLink rangeOfString:@".html"].location!=NSNotFound)
        {
            [[UIApplication sharedApplication]openURL:[request URL]];
            return NO;
        }
        else
        {
            return TRUE;
        }
        return NO;
    }
    return YES;
}

上面的代码检查要打开的链接是否有.html扩展名?它的工作原理相应。

在你的问题中还有一件事你没有提到href是本地页面或外部链接的链接。

答案 2 :(得分:0)

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
 NSURL *url = request.URL;
    NSString * temp = [NSString stringWithFormat:@"%@",url];
    if ([temp rangeOfString:@"www"].location != NSNotFound)
    {
        // show alert view for go to safari
        // i.e
        [[UIApplication sharedApplication] openURL:url];
    }
    else
    {
        // your regular html page pushed
    }

}