2012-06-14 82 views
3

看起來大家都知道這個笨蛋,但是在PhoneGap中,它不允許你在應用程序中擁有iFrames。有很多修復方法,但它們要麼是針對傳統版本的PhoneGap,不能運行或導致其他問題。以下是我迄今爲止嘗試:Cordova(PhoneGap)和iFrames

  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?

似乎沒有任何工作。這裏就是我試圖完成:

  1. 視頻還有Vimeo(IFRAME)嵌入留在應用程序,externalhosts:vimeo.com a.vimeocdn.com b.vimeocdn.com
  2. 所有其他鏈接出去Safari瀏覽器

這裏是我的應用程序的詳細信息:

IOS 5.1.1 | Cordova 1.7.0 | JqueryMobile | Jquery 1.7.1

+0

改變了以下功能我不知道會有多大幫助,但我已經在iOS 5中運行良好,與使用的Vimeo科爾多瓦1.7示例應用程序 - https://開頭的github .com/dhavaln/cordova-examples/tree/master/ios-cordova-video – dhaval

+0

你有鏈接到safari的應用程序的其他鏈接?我能夠獲得視頻嵌入,但是然後我所有的鏈接啓動我的程序,而不是調用Safari瀏覽器... – nate8684

+0

是的,我可以這樣做,我已經更新上述github項目的變化 – dhaval

回答

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]; 
} 
+0

感謝您的帖子。你知道這是否會在科爾多瓦1.8.1?我粘貼它,並有兩個警告:未使用的變量「結果」和控制可能會達到非無效功能的結束......想法? – nate8684

+1

我m使用科爾多瓦1.7.1所以不知道這將如何工作在1.8.1,我也修復了警告 – dhaval

+1

哦,人...經過無數嘗試的解決方案後,這一個最後的作品!非常感謝你解決這個頭痛。我仍然有兩個警告,我應該擔心嗎?因爲他們,蘋果會不會批准我?讓我知道,再次感謝! – nate8684