我添加rel="external"
到我的锚链接。
然后在类中添加/覆盖该shouldStartLoadWithRequest
方法MainViewController
:
- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
// Intercept the external http requests and forward to Safari.app
// Otherwise forward to the PhoneGap WebView
if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]){
[[UIApplication sharedApplication] openURL:url];
return NO;
}
else {
return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];
}
}
这适用于 jQuery Mobile 1.2 和 Phonegap 2.2.0。它应该在 Phonegap 2.3.0 中同样工作——但我还没有测试过。
==================================================== =================================
更新:
在 Phonegap 2.7.0 或更高版本中可能不需要这样做。Phonegap 现在可以在 UIWebView、Safari 或 InAppBrowser 组件中打开链接。我个人喜欢 InAppBrowser 组件,因为它对于很多用例来说似乎是更好的用户体验。如果您想在 Safari 中打开链接,您现在可以使用 Javascript 执行此操作:
window.open('http://whitelisted-url.com', '_system');
或者对于 InAppBrowser:
window.open('http://whitelisted-url.com', '_blank');
在这里查看更多信息:
http://wiki.apache.org/cordova/InAppBrowser
http://docs.phonegap.com/en/2.7.0/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser