我也遇到了这个问题。看起来大部分的回答都与问题完全相反,人们通常会回答如何在inAppBrowser中打开,我不知道为什么。
就像你一样,我尝试了各种方法,但没有一个有效。最终我不得不采取本地方式。幸运的是,在本地方式下只用了不到10分钟的时间,比尝试其他人的phonegap答案要短得多。
在Android中,
- add the line in onCreate method to bind object to webpage's window object.
add a method on your binded object which accept a url string and behave open browser behavior.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.appView.addJavascriptInterface(this, "nativeInterface");
}
public void openInDeviceBrowser(String url) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
}
在 HTML 中
<a href="#" onclick="window.nativeInterface.openInDeviceBrowser('http://www.google.com/')">Google</a>
iOS平台
1. 在MainViewController.h文件中添加委托(在我的项目中,它是这个名称)
@interface MainViewController : CDVViewController<UIWebViewDelegate>
2. 将MainViewController设置为webView的代理,在- (void)webViewDidFinishLoad:(UIWebView*)theWebView{
块中添加以下行:
theWebView.delegate = self
3. 实现“- (BOOL)webView:shouldStartLoadWithRequest:navigationType:”方法:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if(navigationType==UIWebViewNavigationTypeLinkClicked)
{
NSURL* url = [request URL];
if ([[url scheme] isEqualToString:@"http"]) {
[[UIApplication sharedApplication] openURL:url];
return NO;
}
}
return YES;
}
最后,将你的html调用更改如下:
<a href="http://www.google.com/" onclick="window.nativeInterface.openInDeviceBrowser('http://www.google.com/')" target="_blank">Google</a></li>
就是这样了。对我来说比想象中容易,而且很有效。我认为这可以避免将来再次更改phonegap api。
希望这对您也有用。
$('a[target=_system]').click(function(){...})
- Alastair<access origin="*"/> <plugin name="cordova-plugin-whitelist"/> <allow-intent href="http://*/*"/>
请参见https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/index.html。 - Tim Van Laer