2012-04-10 77 views
0

我有一個jquery移動應用程序,我在iPhone/Android商店Phonegap包裝。 我有一個使用iframe的頁面,它沒有Phonegap,就像你期望的那樣工作。 但是,一旦包裝,Iframe實際上會導致應用程序打開一個新窗口/瀏覽器,並離開應用程序。 有誰知道這是否有解決方案? 謝謝!Iframe在新窗口中打開一旦包裹在Phonegap

+0

我知道一個事實,這是一個Android上的問題。另外,我不確定我們是否能夠修復它,直到我們對歷史處理方式進行內部更改。 – 2012-04-11 13:35:31

+0

這是android中的一個錯誤。 http://code.google.com/p/android/issues/detail?id=17535尋找解決方法我自己... – user1496391 2012-09-04 02:18:05

回答

1

http://denrobapps.com/2010/12/phonegap-and-iframes/

首先,打開PhoneGapDelegate.m,找到這個代碼塊:

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

/* 
* Get Command and Options From URL 
* We are looking for URLS that match gap://<Class>.<command>/[<arguments>][?<dictionary>] 
* We have to strip off the leading slash for the options. 
*/ 
if ([[url scheme] isEqualToString:@"gap"]) { 

    InvokedUrlCommand* iuc = [[InvokedUrlCommand newFromUrl:url] autorelease]; 

    // Tell the JS code that we've gotten this command, and we're ready for another 
    [theWebView stringByEvaluatingJavaScriptFromString:@"PhoneGap.queue.ready = true;"]; 

    // Check to see if we are provided a class:method style command. 
    [self execute:iuc]; 

    return NO; 
} 

/* 
* If a URL is being loaded that's a local file URL, just load it internally 
*/ 
else if ([url isFileURL]) 
{ 
    //NSLog(@"File URL %@", [url description]); 
    return YES; 
} 

/* 
* We don't have a PhoneGap or local file request, load it in the main Safari browser. 
*/ 
else 
{ 
    //NSLog(@"Unknown URL %@", [url description]); 
    //[[UIApplication sharedApplication] openURL:url]; 
    return NO; 
} 

return YES; 
} 

插入該否則,如果權下的第一,如果該塊的聲明:

else if ([[url scheme] isEqualToString:@"http"]) 
{ 
    return YES; 
} 

還要確保[[UIApplication sharedApplication] openURL:url]在最後的else語句中取消註釋(否則單擊iFrame中的鏈接將不起作用):

else 
{ 
    //NSLog(@"Unknown URL %@", [url description]); 
    [[UIApplication sharedApplication] openURL:url]; 
    return NO; 
} 
+0

感謝這對我工作! – 29er 2012-04-24 16:12:06

0

這是因爲phonegap默認禁用外部內容,並且指的是內置的瀏覽器。

您可以在文件/res/xml/cordova.xml解決這個

右鍵 - >用文本編輯器打開 ,然後尋找有行:

<access origin="http://127.0.0.1*"/> <!-- allow local pages --> 
<!-- <access origin="https://example.com" /> allow any secure requests to example.com --> 
<!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www --> 
<!-- <access origin=".*"/> Allow all domains, suggested development use only --> 

我猜的文件那就說明一切。我不知道允許多個訪問源(我託管在同一臺服務器上的所有代碼)並指向我的初始文件。所以我不再使用/ assets/www。