我正在尝试使用InAppBrowser打开外部网页,这很好用! 该页面在应用程序中打开,我也可以打开多个标签页。
但有一个问题。当我打开一个网页(远程站点)时,它拥有自己的外部链接。 当我单击这些链接时,它会在应用程序的同一个InAppBrowser选项卡中打开它们。
我不希望这种行为。我希望能够将所有这些链接发送到ios safari系统浏览器。 我正在努力获取我在Cordova / PhoneGap上写的应用程序外部的链接。
我正在使用InAppBrowser插件,我希望整个应用中的每个链接都在外面打开。
以下是插件中打开链接的代码:
- (void)open:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* pluginResult;
NSString* url = [command argumentAtIndex:0];
NSString* target = [command argumentAtIndex:1 withDefault:kInAppBrowserTargetSelf];
NSString* options = [command argumentAtIndex:2 withDefault:@"" andClass:[NSString class]];
self.callbackId = command.callbackId;
if (url != nil) {
NSURL* baseUrl = [self.webView.request URL];
NSURL* absoluteUrl = [[NSURL URLWithString:url relativeToURL:baseUrl] absoluteURL];
if ([self isSystemUrl:absoluteUrl]) {
target = kInAppBrowserTargetSystem;
}
if ([target isEqualToString:kInAppBrowserTargetSelf]) {
[self openInCordovaWebView:absoluteUrl withOptions:options];
} else if ([target isEqualToString:kInAppBrowserTargetSystem]) {
[self openInSystem:absoluteUrl];
} else { // _blank or anything else
[self openInInAppBrowser:absoluteUrl withOptions:options];
}
现在,我尝试用许多不同的方式改变它,使其在外面打开,但它不起作用!! 当我使用window.open时,它显然应该在应用程序中打开一个新选项卡,但是任何从打开的页面开始的链接应该在应用程序外部和系统浏览器中打开。
使用window.open打开的一些页面是远程http页面,由于最奇怪的原因,我无法在reomote页面中将这些链接打开到外面。
是否可以将该代码更改为顶部以强制它在外部打开这些链接?
有趣的是,如果我打开其中一个类,我可以在常规的cordova浏览器中执行此操作:
platforms / ios / CordovaLib / Classes / CDVWebViewDelegate.m LINE 207
if (navigationType == UIWebViewNavigationTypeLinkClicked){
[[UIApplication sharedApplication] openURL:request.URL];
return NO;
}
return YES;
所以请告诉我我的选择是什么。