我有一個jquery移動應用程序,我在iPhone/Android商店Phonegap包裝。 我有一個使用iframe的頁面,它沒有Phonegap,就像你期望的那樣工作。 但是,一旦包裝,Iframe實際上會導致應用程序打開一個新窗口/瀏覽器,並離開應用程序。 有誰知道這是否有解決方案? 謝謝!Iframe在新窗口中打開一旦包裹在Phonegap
0
A
回答
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。
相關問題
- 1. 在新窗口中打開iframe
- 2. 用iframe打開新窗口
- 3. 在一個iframe中打開新窗口鏈接
- 4. 在新窗口中打開一個iframe的postMessage
- 5. IFrame在整個窗口中打開
- 6. 在iframe中而不是在新窗口中打開網站
- 7. 在Silverlight中打開一個新窗口
- 8. 在PyGame中打開一個新窗口?
- 9. 在asp.net中打開一個新窗口
- 10. IFrame表單提交在框架中打開,需要在新窗口中打開
- 11. 防止iframe打開新窗口
- 12. handeling在iframe中的新選項卡/窗口中打開
- 13. 在新窗口中的iframe中打開鏈接
- 14. colorbox中的鏈接iframe在新窗口中打開
- 15. 在iFrame中的新窗口中打開鏈接
- 16. 在新窗口中打開窗體
- 17. 硒:父窗口關閉,一旦子窗口打開
- 18. 在新窗口打開
- 19. 打開在AngularJS新窗口
- 20. 從iframe打開窗口
- 21. 打開Windows窗體只在C#一旦
- 22. 如何在新窗口中打開iframe日曆
- 23. IFRAME - FORM - GWT頁面未在新窗口中打開
- 24. 在新窗口中打開Iframe內容鏈接
- 25. 如何使iframe在新窗口中打開
- 26. 如何在Facebook標籤的新窗口中打開iframe?
- 27. 使用iFrame在新窗口中打開PDF
- 28. 在iFrame而不是新窗口中打開表格
- 29. 在父窗口的新選項卡中打開Iframe鏈接
- 30. 在新窗口中打開iframe(fancybox)的鏈接
我知道一個事實,這是一個Android上的問題。另外,我不確定我們是否能夠修復它,直到我們對歷史處理方式進行內部更改。 – 2012-04-11 13:35:31
這是android中的一個錯誤。 http://code.google.com/p/android/issues/detail?id=17535尋找解決方法我自己... – user1496391 2012-09-04 02:18:05