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>