Cordova (PhoneGap) 和 iFrame

Posted

技术标签:

【中文标题】Cordova (PhoneGap) 和 iFrame【英文标题】:Cordova (PhoneGap) and iFrames 【发布时间】:2012-06-14 14:17:57 【问题描述】:

似乎每个人都知道一些愚蠢的事情,但在 PhoneGap 中不允许您在应用程序中使用 iFrame。那里有许多修复程序,但它们要么适用于旧版 PhoneGap,要么不起作用,要么导致其他问题。到目前为止,这是我尝试过的:

    OpenAllWhitelistURLsInWebView

    http://craigpfau.com/2012/02/phonegap-ios-uiwebview-and-safari-app-links/

    How can I open an external link in Safari not the app's UIWebView?

似乎没有任何效果。这是我想要完成的事情:

    来自 vimeo (iframe) 的视频嵌入保留在应用程序中,外部主机:vimeo.com a.vimeocdn.com b.vimeocdn.com 所有其他链接都指向 safari

这是我的应用详情:

iOS 5.1.1 |科尔多瓦 1.7.0 | JqueryMobile | jQuery 1.7.1

【问题讨论】:

我不确定它会有多大帮助,但我有一个在 iOS 5 中使用 Cordova 1.7 的示例应用程序,在 Vimeo 上运行良好 - github.com/dhavaln/cordova-examples/tree/master/… 您是否有其他链接与链接到 safari 的应用程序?我可以嵌入视频,但是我的所有链接都会在我的程序中启动,而不是调用 safari... 是的,我可以这样做,我已经用更改更新了上面的 github 项目 【参考方案1】:

我有一个示例应用程序here,它确实在应用程序内打开了 Vimeo 视频,但在 Safari 中打开了其他网址。

我在 MainViewController.m 中更改了以下函数

- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

    NSURL *url = [request URL];
    NSString *host = [request.URL host];

    if(host != NULL || host != nil)
        if ([host rangeOfString:@"vimeo.co"].location != NSNotFound) 
            return YES;
        else
            if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) 
                [[UIApplication sharedApplication] openURL:url];
                return NO;
            
            else 
                return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
            
        
    

    return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];

【讨论】:

感谢您的帖子。你知道这是否适用于 Cordova 1.8.1?我将其粘贴并有两个警告:未使用的变量“结果”和控制可能到达非无效函数的结尾......想法? 我正在使用cordova 1.7.1,所以不确定这将如何在1.8.1中工作,我也修复了警告 哦,伙计...经过无数次尝试的解决方案,这个终于奏效了!非常感谢您解决了这个头痛。我仍然有这两个警告,我应该担心它们吗?苹果会因为他们不批准我吗?告诉我,再次感谢! 请从上面的代码更新警告代码,我已经在上面的代码sn-p中修复了这个问题 是的,抱歉后记评论。您的修复工作。非常感谢你,真的不能说你帮了我多少!

以上是关于Cordova (PhoneGap) 和 iFrame的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap/Cordova、波纹仿真器、CORS 和 JSONP

在 Cordova / PhoneGap 中生成 iOS 和 Android 图标

Phonegap/Cordova 中的本地通知

用于单一注册的cordova、Phonegap 推送插件和c#?

Cordova/PhoneGap - 通过应用商店验证

Cordova / Phonegap 和 iOS 8.1 库路径