Cordova(PhoneGap)和iFrames

时间:2012-06-14 14:17:58

标签: ios5 cordova

似乎每个人都知道愚蠢的一点,但在PhoneGap中,不允许你在你的应用程序中使用iFrame。有很多修复,但它们要么是旧版本的PhoneGap,要么不起作用或导致其他问题。这是我到目前为止所尝试的:

  1. OpenAllWhitelistURLsInWebView

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

  3. How can I open an external link in Safari not the app's UIWebView?
  4. 似乎没什么用。这是我正在努力实现的目标:

    1. 视频嵌入来自vimeo(iframe)留在app,externalhosts:vimeo.com a.vimeocdn.com b.vimeocdn.com
    2. 所有其他链接都要去safari
    3. 以下是我的应用详情:

      ios 5.1.1 | Cordova 1.7.0 | JqueryMobile | Jquery 1.7.1

1 个答案:

答案 0 :(得分:7)

我有一个示例应用程序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];
}