PhoneGap Build: как открыть внешний url в браузере устройств на Android?

Внешний URL не открывается в системном браузере в приложении Android PhoneGap. Я использую PhoneGap Build 2.3.0.

В соответствии с документацией Кордовы я использовал целевую систему _system:

window.open('http://www.myurl.nl', '_system');

В моем config.xml у меня есть:

<plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser" />
<access origin="*" browserOnly="true" />

Но все же ссылки открываются в моем приложении webview.

Как это решить?

Ответ 1

Это не ответ, когда вы хотите продолжать использовать PhoneGap Build, но я решил проблему, установив среду разработки для Cordova (PhoneGap) на моем компьютере и компилируя приложение локально. В Cordova 2.5.0 window.open('http://www.myurl.nl', '_system'); работает отлично, он откроет ссылку в системном браузере.

Итак, мой совет - прекратить использование PhoneGap Build и начать компиляцию приложения локально. Здесь, как настроить среду разработки для Кордовы " >

Ответ 2

Поздний ответ, но может быть, это может помочь кому-то.

navigator.app.loadUrl('https://google.com/', { openExternal:true });

Кордова 3.3.1

Ответ 3

Этот вопрос сейчас немного стар, но я чувствовал, что его стоит обновлять. Теперь это прекрасно работает с PhoneGap Build при использовании с 2.9.0.

Я собрал и протестировал его на Android 4.3 и iOS 6.1.3. У меня нет плагина InAppBrowser в моем приложении, чтобы открывать страницы в приложении, а не заставлять собственный браузер открывать их, и у меня есть только теги доступа:

<access origin="http://127.0.0.1*"/>
<access origin="http://phonegap.com" subdomains="true" />

Ответ 4

Это сработало для меня. Phonegap 3.1.0.

html-код:

<a id="ext-link" href="#">Google it</a>

или

<button id="ext-link" href="#">Google it</button>

Javascript (с jQuery + cordova):

$("#ext-link").on("click"), function() {
    if (typeof navigator !== "undefined" && navigator.app) {
        // Mobile device.
        navigator.app.loadUrl('http://www.google.com/', {openExternal: true});
    } else {
        // Possible web browser
        window.open("http://www.google.com/", "_blank");
    }
});

Надеюсь, что это поможет.

Ответ 5

@George Siggouroglou: Не рекомендуется использовать идентификатор для элементов, которые в конечном итоге будут отображаться более одного раза в документе. Вместо этого его хорошая практика сделать код более модульным.

если ожидать сенсорных устройств, это также хороший выбор для использования "tap" перед "click", потому что он срабатывает намного быстрее и раньше, чем щелчок. чтобы проверить сенсорный материал, который я предпочитаю использовать modernizr, потому что он делает обнаружение признаков легким.

Событие события переключения jQuery Mobile запускается после быстрого, полного события касания, которое происходит на одном целевом объекте. Это эквивалент жеста обычного события кликов, который запускается в состоянии выпуска жестов касания. https://api.jquerymobile.com/tap/

надеюсь, что кто-то поможет

**html code:**

<a class="ext-link" href="#">Google it</a>

или

<button class="ext-link" href="#">Google it</button>

Javascript (с jQuery):

//define tab or click event type on rool level (can be combined with modernizr)
iaEvent = "click";
if (typeof navigator !== "undefined" && navigator.app) {
   iaEvent = "tap";
}
$('.ext-link').each.bind(iaEvent, function() {
    if (typeof navigator !== "undefined" && navigator.app) {
        // Mobile device.
        var linktarget = this.attr("href");
        navigator.app.loadUrl(linktarget, {openExternal: true});
    } else {
        // Possible web browser
        window.open(linktarget, "_blank");
    }
});

Ответ 6

Используйте этот

window.open('http://www.myurl.nl', '_blank', 'location=yes');