Ответ 1
Была такая же проблема после обновления до Кордовы 1.6.1.
Попробуйте добавить
target="_blank"
к вашим ссылкам.
Это помогло мне.
Я только что обновился до PhoneGap 1.6.1, и я больше не могу открывать внешний URL в Safari.
До этой версии я исправил AppDelegate.m следующим образом:
- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ([[url scheme] isEqualToString:@"http"]) {
[[UIApplication sharedApplication] openURL:url];
return NO;
} else {
return [self.viewController webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];
}
}
Я заметил, что аналогичный вопрос был задан раньше: Как открыть внешнюю ссылку в Safari, а не в UIWebView приложения?
Но мне кажется, что этот ответ больше не работает в версии 1.6.1.
Я также попытался установить OpenAllWhitelistURLsInWebView в Cordova.plist, но ни одна настройка не дает мне Safari.
Спасибо заранее.
Была такая же проблема после обновления до Кордовы 1.6.1.
Попробуйте добавить
target="_blank"
к вашим ссылкам.
Это помогло мне.
Лучший способ открыть ссылки в новом URL-адресе - с помощью window.open
. Просто установите цель как "_систему":
window.open("http://stackoverflow.com", "_system");
Прежде чем я нашел это в документах, я на самом деле написал плагин, чтобы сделать то же самое. Я собираюсь оставить этот ответ здесь, потому что это даст вам гораздо более подробный контроль над обработкой ссылок.
С PhoneGap 2.3+ мне не удалось открыть URL-адреса в Mobile Safari. Использование _blank не помогло, и я попробовал window.open(url, '_blank'), но теперь он открывает URL-адрес с помощью плагина InAppBrowser (который в значительной степени засасывает). Я подумал, что интересно, что этот плагин использовал плагин, поэтому я решил написать плагин для открытия URL-адресов, используя стандартный метод открытия URL-адресов в приложениях iOS. Вы можете увидеть/захватить код этот смысл здесь: https://gist.github.com/typeoneerror/5097118.
В моем примере я подключил ссылки, которые имеют класс "_blank" с jQuery, и открыл эти URL-адреса с помощью вызова плагина:
// execute the plugin called OpenUrl, signature:
// exec(successCallback, errorCallback, pluginName, pluginMethod, params)
cordova.exec(success, error, "OpenUrl", "openUrl", [url]);
Я использовал это в MainViewController.m
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
NSString *str = url.absoluteString;
NSRange range = [str rangeOfString:@"http://"];
//HACK to make url open in safari
if (range.location != NSNotFound) {
[[UIApplication sharedApplication] openURL:url];
return NO;
}
else {
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}
}
В более ранней версии кордовы вы можете загрузить URL-адрес в браузере, добавив в свои ссылки target = "_ blank". Но теперь вы можете использовать функцию браузера inApp.
var ref = window.open(encodeURI('your url'), '_system', 'location=no');
Это открывает URL-адрес в браузере. Протестировано в Android и iPhone с cordova2.7.0
Мне удалось заставить его работать с этой настройкой:
1 Добавьте следующую строку в config.xml - PhoneGap версии 3.1 и выше:
<gap:plugin name="org.apache.cordova.inappbrowser" />
2 Впоследствии вы можете сделать следующее:
<a onclick="window.open("http://www.yoururl.com/", "_system");">Link</a>
Попытка упростить решение, это то, с чем я столкнулся, используя PhoneGap/Cordova 2.5.0 и jQuery 1.9.1
<a target="_system" href="http://rads.stackoverflow.com/amzn/click/B009CZICQ8">
Затем я вызываю:
$("a[target='_system']").click(function(event) {
event.preventDefault();
window.open($(this).attr("href"), "_system");
});
Сделайте это:
<a href="http://www.google.com/" onclick="window.open(this.href,'_system'); return false;">Google</a>
Использование Phonegap/Cordova 1.7 Мне удалось открыть URL-адреса во внешнем браузере на JavaScript, просто сделав следующее:
window.location.href = "http://www.google.com";
У меня также есть OpenAllWhitelistURLsInWebView, установленный в NO в Cordova.plist
Это 100% гарантированное решение, если вы используете Phonegap (тестируется в iOS 6).
Чтобы открыть внешний URL-адрес в Safari, выполните следующие действия:
http://google.com/
Cordova.plist
или Phonegap.plist
измените OpenAllWhitelistURLsInWebView
с Yes
на No
.В своем приложении добавьте target="_blank"
к своей ссылке. Пример:
<a href="http://google.com" target="_blank">Google.com</a>
Спасибо.
Я думаю, что этот метод использовался в /Classes/ [yourAppName]AppDelegate.m, а теперь он находится в /Classes/MainViewController.m. Просто переместил его туда, чтобы увидеть, работает ли он.
чтобы открыть внешний URL в Safari Выполните следующие шаги.
1). Добавьте свою ссылку в External Host (белый список). с полным URL-адресом если вы хотите использовать URL-адрес Google, добавьте например: http://google.com/
2). В Cordova.plist или Phonegap.plist измените
OpenAllWhitelistURLsInWebView от Yes to No
для Android True для false.
3). напишите этот код для открытия URL
window.location.href = "http://www.google.com";
Решенный сегодня с использованием этих настроек:
Затем выполните следующие действия:
<a href='http://www.arsdigitalia.it' target='_blank'>Go to my nice website</a>