【问题标题】:How to Load Only .html page in WebView and All www Page load in Safari in iOS?如何在 WebView 中仅加载 .html 页面并在 iOS 的 Safari 中加载所有 www 页面?
【发布时间】:2015-01-20 08:01:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios objective-c webview


    【解决方案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,请尝试以下操作:

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

    【讨论】:

    • 一些细节怎么样?什么是 request.url?它是否以“.html”结尾?
    • @web 视图中没有加载 html 文件。
    • 现在我在我的问题中编写了一个代码编辑,当我点击网站 url 然后它在 safari 和 web 视图中打开但我希望它只在 safari 和我的新代码中打开我的 html 页面工作正常.only 网站在 web 视图和 safari 中都打开我只想在 safari 而不是 web 视图中打开请给我解决方案。
    • 很高兴我们知道了。
    • 我的一个问题是,如果我想在包含 .mp3 文件的 href 链接上播放 mp3 文件,有可能吗?
    【解决方案2】:

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

    -(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 是本地页面的链接或外部链接的链接。

    【讨论】:

    • .html href 链接是本地页面
    • 那么我建议搜索 http:// 协议。因此,如果链接以 http:// 开头,则打开 safari,否则在 web 视图中加载。
    【解决方案3】:
    -(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
        }
    
    }
    

    【讨论】:

    猜你喜欢
    • 2015-02-25
    • 2016-05-22
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多