Последовательный способ открытия ссылок из приложения Phonegap в Android и iOS?

У меня есть мобильное приложение, сделанное с помощью Phonegap, которое отображает новостные статьи, которые могут содержать ссылки. Я хочу, чтобы эти ссылки открывались в правильном браузере, отдельно от приложения. Я не могу найти ни одного способа сделать это, что дает те же результаты в Android и iOS после того, как я обновился с версии Phonegap до 2.0.0 до 2.1.0 (так как вы не можете повернуть экран в iOS до 2.1).


<a href="#" onclick="location.href='http://blah'; return false;">
Всегда открывается в приложении, нет панелей инструментов браузера и нет возможности вернуться в приложение, не прерывая его. iOS подчиняется <access origin="http://blah" /> в config.xml, но Android этого не делает. Также не заботятся об атрибуте browserOnly="true".

<a href="#" onclick="location.href='http://blah'; return false;" target="_blank">
iPhone открывает это в браузере Safari, если <access> разрешает его (или полностью опущен), но Android открывает его в приложении.

<preference name="stay-in-webview" value="false" />
Добавление этого в config.xml не имеет никакого значения.

<a href="#" onClick="navigator.app.loadUrl('http://blah',{openExternal:true});return false;">
Поддерживается только в Android, где открывается ссылка в браузере Chrome. Ошибки в iOS.

<a href="#" onClick="window.open('http://blah','_blank','location=yes');return false;">
В Phonegap версии 2.3.0 это будет оставаться в приложении, но отображает панель инструментов браузера, расположенную по дешевке, сверху или снизу с кнопкой, которая позволяет вам вернуться в приложение. Это последовательное... но не то, что я хочу. (В версии 2.1.0 это заставляет Android открываться в приложении и iOS для открытия в соответствующем браузере.)


Я использую Phonegap Build, поэтому это решение не будет работать.
Официальная документация относится к этому сообщению в блоге, который был написан со ссылкой на версию 1.5.0, и мои выводы с 2.1.0 по 2.3.0 не совпадают с их столом.
Я действительно не хочу добавить плагин для чего-то такого простого.

Есть ли одна часть кода, которая приведет к открытию ссылки в собственном браузере устройства, вне веб-просмотра приложения, независимо от ОС?

Ответ 1

Может быть, не слишком поздно. В любом случае, это из нашей кодовой базы, и она работает на обеих платформах.

openURL: function(url) {
    if(device.platform === 'Android') {
        navigator.app.loadUrl(url, {openExternal:true});
    } else {
        window.open(url, '_system');
    }
},

Ответ 2

Я просто хотел указать, что на самом деле мне это не удалось, но вы используете плагин inAppBrowser и имеете ли вы это в своем файле config.xml с необходимыми разрешениями?

В соответствии с этим http://docs.phonegap.com/en/3.3.0/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser вы должны использовать:

var ref = window.open(url, target, options);

target: The target in which to load the URL, an optional parameter that defaults to _self. (String)

_self: Opens in the Cordova WebView if the URL is in the white list, otherwise it opens in the InAppBrowser.
_blank: Opens in the InAppBrowser.
_system: Opens in the system web browser.

Ответ 3

вам нужно установить плагин inAppBrowser и запустить эту функцию onDeviceReady с помощью метода jQuerys.on('click'), например:

function hijack_externalLinks(){

    $(document).on('click', "a[href^='http://']", function (e) {

         window.open( this.href , '_system', 'location=yes' );
         this.href = '/#';

          });
}

Ответ 4

PhoneGap 2.5.0 docs говорят, что он поддерживает цели "_blank", "_self", "_system" - все ли они делают то, что вам нужно? Я угадываю здесь, поскольку я еще не создал надлежащую тестовую среду, пока не могу попробовать.