phonegap открыть ссылку в браузере
<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
Эй эксперты я использую phonegap 2.9.0 и я использую приведенный выше код, чтобы открыть ссылку в браузере, но он открывает его в том же приложении...... как открыть его браузер safari?
Он открывает веб-сайт в том же приложении, а затем я не могу вернуться к приложению, поэтому мне нужно удалить приложение и установить его снова.....
11 ответов:
как полагают в аналогичный вопрос использовать JavaScript для вызова
window.open
С
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>
работает для меня с android & PG 3.0
Как ответили в других сообщениях, у вас есть два разных варианта для разных платформ. Что я делаю:
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 и плагины устройства
есть 2 различных способа открыть URL в android и iphone.
для IOS используйте следующий код.
window.open("http://google.com", '_system');
и для ОС Android используйте следующий код.
navigator.app.loadUrl("http://google.com", {openExternal : true});
наконец этот пост помогает мне на iOS: http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/.
Открыть " CDVwebviewDelegate.m "file and search "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 это нормально.Via Cordova 3.3.0.
ни один из этих ответов не достаточно четкие, чтобы получить внешние ссылки, чтобы открыть в каждой платформе. В соответствии с inappbrowser в документы:
установить
cordova plugin add cordova-plugin-inappbrowser
окне перезаписи.открыть (необязательно, но рекомендуется для простоты)
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'); } });
Если у вас есть 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
window.open('http://www.kidzout.com', '_system');
будет работать, но только если у вас установлен плагин inappbrowser. Для установки, используя терминал, перейдите в папку www в вашем проекте и введите:
phonegap plugin add org.apache.cordova.inappbrowser
или
cordova plugin add org.apache.cordova.inappbrowser
тогда это ваша ссылка откроется в браузере.
С 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>
Я использую PhoneGap Build (v3.4.0), с акцентом на iOS, и мне нужно было иметь эту запись в моей конфигурации.XML для PhoneGap, чтобы распознать плагин inappbrowser.
<gap:plugin name="org.apache.cordova.inappbrowser" />
после этого, через окно.open (url, target) должен работать так, как ожидалось, как задокументировано здесь.
Я также столкнулся с проблемой, что ссылка не открывалась в браузере вот мое исправление с шагами:
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
файл и вставьте его в . Затем сделайте ссылку на это в .<script src="cordova.js"></script>
это решение будет работать для обоих окружающая среда android и iPhone.