ios - 选择 iOS 应用程序的外部浏览器中加载的内容

标签 ios jquery-mobile cordova

我开发了一个在查询移动和phonegap中运行的应用程序。该应用程序有两个部分,都从外部数据库提取数据以便于更新。这两个领域是电影和内容。这些电影从 YouTube 流式传输,内容是从外部数据库中提取的文本并显示为迷你网页。

一切正常,除了列出所有电影(带有小预览图像)的电影页面重定向到 YouTube,打开列表中的第一个视频。添加:

    - (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];
    if ([[url scheme] isEqualToString:@"http://"] || [[url scheme] isEqualToString:@"https://"]) {
        return YES;
    }
    else {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }
}

到应用程序 delegate.m 文件解决了这个问题,但又创建了另一个问题。在应用程序的第二部分中从数据库中提取的内容有一些指向外部网页的链接,我们希望在 safari 中打开这些链接,以便为用户提供最佳的查看可能性,但即使链接具有 target=由于上面的覆盖代码,它们仍然在应用程序中打开“_blank”。

有没有办法搜索 youtube 链接而不是 http || https?

希望这能解释我的问题,并欢迎任何帮助。

最佳答案

我找到了解决方案,更改代码以首先检查 www.youtube.com 可以解决问题。幸运的是,应用程序内的所有链接都转到 m.youtube.com,因此这解决了您不转发的问题;)

    - (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];

    if ([[url host] isEqualToString:@"www.youtube.com"]){
        return YES;
    } else if ([[url scheme] isEqualToString:@"http://"] || [[url scheme] isEqualToString:@"https://"]) {
        return YES;
    } else {
        return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
    }  
}

关于ios - 选择 iOS 应用程序的外部浏览器中加载的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8574299/

相关文章:

ios - 是否有解决与cordova-plugin-fcm-with-dependecy-updated 和cordova ios 冲突的解决方法

iphone - 核心数据获取不一致

ios - 如何重新加载以编程方式移动的行?

ios - Swift 4 ImageIO_jpeg_Data 中的内存泄漏 UIImage

javascript - Jquery - 调整大小后单击事件不起作用

css - Ajax 加载器无法正常工作

layout - 使用 jQuery Mobile 和响应式布局/CSS 媒体查询是否多余?

ios - 在 phonegap 构建中为 ios 创建应用程序

iphone - 如何轻松地将分贝读数的值传递到动态针图形

javascript - Android 推送通知-单击单个推送通知的操作按钮时如何获取通知数据