Phonegap открыть ссылку в браузере
<a target="_blank" data-rel="external" href="#" onclick="location.href='http://www.kidzout.com'; return false;">www.kidzout.com</a>
Привет, эксперты, я использую phonegap 2.9.0, и я использую приведенный выше код, чтобы открыть ссылку в браузере, но он открывает ее в том же приложении... как открыть браузер Safari?
он открывает веб-сайт в том же приложении, а затем я не могу вернуться в приложение, поэтому мне нужно удалить приложение и установить его снова.....
Ответы
Ответ 1
Как предложено в аналогичном вопросе, используйте JavaScript для вызова window.open
с target
аргументом, установленным в _system
, согласно документации InAppBrowser:
<a href="#" onclick="window.open('http://www.kidzout.com', '_system'); return false;">www.kidzout.com</a>
Это должно работать, хотя лучшим и более гибким решением было бы перехватывать все события click
ссылок и вызывать window.open
с аргументами, считанными из атрибутов ссылки.
Помните, что вы должны установить плагин InAppBrowser, чтобы это работало:
cordova plugin add cordova-plugin-inappbrowser
Ответ 2
Как указано в других сообщениях, у вас есть два разных варианта для разных платформ. Что я делаю:
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
// Mock device.platform property if not available
if (!window.device) {
window.device = { platform: 'Browser' };
}
handleExternalURLs();
}
function handleExternalURLs() {
// Handle click events for all external URLs
if (device.platform.toUpperCase() === 'ANDROID') {
$(document).on('click', 'a[href^="http"]', function (e) {
var url = $(this).attr('href');
navigator.app.loadUrl(url, { openExternal: true });
e.preventDefault();
});
}
else if (device.platform.toUpperCase() === 'IOS') {
$(document).on('click', 'a[href^="http"]', function (e) {
var url = $(this).attr('href');
window.open(url, '_system');
e.preventDefault();
});
}
else {
// Leave standard behaviour
}
}
Итак, как вы можете видеть, я проверяю платформу устройства, и в зависимости от этого я использую другой метод. В случае стандартного браузера я оставляю стандартное поведение. Отныне решение будет отлично работать на Android, iOS и в браузере, а HTML-страница не будет изменена, так что она может содержать URL-адреса в виде стандартного якоря
<a href="http://stackoverflow.com">
Для решения требуются плагины InAppBrowser и Device
Ответ 3
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>
Работает для меня с Android и PG 3.0
Ответ 4
Есть два разных способа открыть URL-адрес в Android и iphone.
Для IOS используйте следующий код.
window.open("http://google.com", '_system');
а для ОС Android используйте следующий код.
navigator.app.loadUrl("http://google.com", {openExternal : true});
Ответ 5
Наконец, этот пост помогает мне в iOS: http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/.
Откройте файл "CDVwebviewDelegate.m" и выполните поиск "shouldStartLoadWithRequest", затем добавьте этот код в начало функции:
if([[NSString stringWithFormat:@"%@",request.URL] rangeOfString:@"file"].location== NSNotFound) {
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
При использовании navigator.app.loadUrl("http://google.com", {openExternal : true});
для Android в порядке.
Через Кордову 3.3.0.
Ответ 6
Ни один из этих ответов не является достаточно явным, чтобы открывать внешние ссылки на каждой платформе. Согласно документам inAppBrowser:
устанавливать
cordova plugin add cordova-plugin-inappbrowser
Перезаписать window.open (необязательно, но рекомендуется для простоты)
window.open = cordova.InAppBrowser.open;
Если вы не перезаписываете window.open
, вы будете использовать встроенную функцию window.open
и не можете ожидать получения одинаковых результатов кросс-платформенной.
Используйте его для открытия ссылок в браузере по умолчанию
window.open(your_href_value, '_system');
Обратите внимание, что целью для inAppBrowser (который является именем плагина, для которого он должен использоваться) является '_blank'
, а не '_system'
.
Без описанных выше шагов я не смог получить ссылки для открытия в кросс-платформе приложений браузера по умолчанию.
Дополнительный кредит
Вот пример (живой) клик для ссылок:
document.addEventListener('click', function (e) {
if (e.target.tagName === 'A' &&
e.target.href.match(/^https?:\/\//)) {
e.preventDefault();
window.open(e.target.href, '_system');
}
});
Ответ 7
Если у вас есть jQuery, вы можете перехватить клик по ссылке, подобной этой:
$(document).on('click', 'a', function (event) {
event.preventDefault();
window.open($(this).attr('href'), '_system');
return false;
});
Таким образом, вам не нужно изменять ссылки в html, что может сэкономить много времени. Я установил это с помощью делегата, поэтому вы видите, что он привязан к объекту документа, а тэг 'a' является вторым аргументом. Таким образом, все теги "a" будут обрабатываться независимо от того, когда они будут добавлены.
Конечно, вам все равно нужно установить плагин InAppBrowser:
cordova plugin add org.apache.cordova.inappbrowser
Ответ 8
window.open('http://www.kidzout.com', '_system');
Будет работать, но только если у вас установлен плагин inappbrowser. Чтобы установить, используя терминал, перейдите в папку www в своем проекте и введите:
phonegap plugin add org.apache.cordova.inappbrowser
или
cordova plugin add org.apache.cordova.inappbrowser
Затем ваша ссылка откроется в браузере.
Ответ 9
С Cordova 5.0 и выше плагин InAppBrowser переименован в реестр плагинов Cordova, поэтому вы должны установить его с помощью
cordova plugin add cordova-plugin-inappbrowser --save
Затем используйте
<a href="#" onclick="window.open('http://www.kidzout.com', '_system');">www.kidzout.com</a>
Ответ 10
Я использую PhoneGap Build (v3.4.0), с акцентом на iOS, и мне нужно было, чтобы эта запись в моем config.xml для PhoneGap распознавала подключаемый модуль InAppBrowser.
<gap:plugin name="org.apache.cordova.inappbrowser" />
После этого использование window.open(url, target) должно работать как ожидалось, как описано здесь.
Ответ 11
Я также столкнулся с проблемой, что ссылка не открывалась в браузере. Это мое исправление с шагами:
1: установите этот плагин cordova.
cordova plugin add cordova-plugin-inappbrowser
2: добавьте открытую ссылку в html, как показано ниже.
<a href="#" onclick="window.open('https://www.google.com/', '_system', 'location=yes');" >Google</a>
3: это самый важный шаг из-за этого, я столкнулся с большой проблемой:
загрузите файл cordova.js
и вставьте его в папку www
.
Затем сделайте ссылку на это в файле index.html
.
<script src="cordova.js"></script>
Это решение будет работать как для Android, так и для iPhone.
Ответ 12
Как это:
<a href="#" onclick="window.open('https://www.nbatou.com', '_system'); return false;">https://www.nbatou.com</a>