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

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

по словам документация Кордова я использовал target '_system':

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

в моей конфигурации.xml у меня есть:

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

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

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

6 ответов


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

поэтому мой совет-прекратить использовать сборку PhoneGap и начать компиляцию вашего приложения локально. вот как настроить среду разработки для Cordova >>


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

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

Кордова 3.3.1


этот вопрос теперь немного устарел, но я чувствовал, что его стоит обновить. Теперь это отлично работает с 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" />

это работает для меня. Помощью 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");
    }
});

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


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

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

мобильный телефон jQuery нажмите триггеры событий после быстрого завершения события касания, которое происходит на одном целевом объекте. Это жест, эквивалентный стандартному событию щелчка, которое вызывается состоянием освобождения жеста касания. 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 tap or click event type on root 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");
    }
});

использовать

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