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

How to Load Only .html page in WebView and All www Page load in Safari in iOS?

我是 iOS 开发的新手 我将我的 HTML 数据加载到 WebView 但有时它只包含 href link as .html link有时网站 link 像 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 文件在 web 视图中,但站点在 safari 和 Webview 中打开,我只希望站点在 safari 中打开请给我解决方案。

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

-(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;
}

以上代码检查将要打开的 link 是否有 .html 扩展名?它相应地工作。

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

我会这样做:

- (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,那么试试这个:

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

    return YES;
}
-(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
    }

}