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


Как ответили в других сообщениях, у вас есть два разных варианта для разных платформ. Вот что я делаю:--3-->

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 "файл и поиск "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'.


без вышеуказанных шагов я не смог получить ссылки для открытия в кросс-платформенном приложении браузера по умолчанию.

дополнительно

вот пример (live) обработчика щелчка для ссылки:

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 (v3.4.0), с акцентом на iOS, и мне нужно было иметь эту запись в моей конфигурации.xml для PhoneGap для распознавания подключаемого модуля InAppBrowser.

<gap:plugin name="org.apache.cordova.inappbrowser" />

после этого, используя window.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.