Phonegap - открыть ссылку в браузере - программирование

Phonegap - открыть ссылку в браузере

Я использую phonegap (cordova 2.2)

У меня есть ссылка вроде этого:

<a href="#" onclick="location.href='http://twitter.com/foobar'; return false;" target="_blank">twitter</a>

В iOS - он открывает ссылку в браузере (Safari)

Но на Android - он открывается внутри webview (внутри моего приложения для телефонных разговоров)

Есть ли способ заставить Android работать так же, как iOS?

4b9b3361

Ответ 1

Вот как я работал, используя Cordova 2.2 и jQuery mobile на Android

JavaScript:

$('.link').live('tap', function() {
    url = $(this).attr("rel");   
    loadURL(url);
});

function loadURL(url){
    navigator.app.loadUrl(url, { openExternal:true });
    return false;
} 

HTML:

<a href='#' class='link' rel='http://www.someurl.com'>Go Somewhere</a>

Ответ 2

Попробуйте это для Android:

function loadURL(url){
    navigator.app.loadUrl(url, { openExternal:true });
    return false;
} 

Html:

<a click="loadURL('http://twitter.com/foobar')">twitter</a>

Вы также можете попробовать это в своем config.xml:

<access origin="*twitter.com" browserOnly="true"/> 

Ответ 3

Ссылка, предоставленная пользователем1879822, была для меня самой полезной: https://build.phonegap.com/blog/access-tags

Подводя итог, PhoneGap имеет белый список разрешенных URL-адресов в своем файле config.xml. Это означает, что если у него есть запись вроде этого...

<access origin="*" />

... он попытается открыть все ссылки внутри своего собственного веб-представления. Однако, если вы ограничиваете свой белый список только конкретными URL-адресами, любая ссылка на URL-адрес, который не входит в этот список, будет автоматически открываться во внешнем браузере, а не в вашем локальном веб-просмотре. Например, если вы ограничиваете это только этим...

<access origin="http://127.0.0.1*" />

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

Ответ 4

Если вы хотите использовать как в версии ios, с атрибутами target="_blank":

$(document).on('tap', 'a[target="_blank"]', function(e){
    navigator.app.loadUrl(e.target.href, { openExternal: true });
    return false;
});

Ответ 5

Я использую это как общее правило:

$('a').live('tap',function(e){
    // if external link then open a browser
    if(String($(this).attr('href')).substring(0,4)=='http' || String($(this).attr('href')).substring(0,5)=='https'){
        navigator.app.loadUrl($(this).attr('href'), { openExternal:true });
        e.stopPropagation();
        return false;
    }
});

Ответ 7

Даже если бы этот вопрос был задан некоторое время назад, я хотел сообщить вам следующую запись блога, которая помогла мне:

https://build.phonegap.com/blog/access-tags

В андроиде все, что мне нужно было, чтобы запретить мой указанный домен. Так что в моем config.xml у меня вообще нет никаких.

Ответ 8

Это сработало для меня на ios

                    $("a[target='_blank']").on('tap touch click',function(e){
                        e.stopPropagation();
                        e.preventDefault();
                        window.open($(this).attr('href'), "_system");
                        return false;
                    });

Ответ 9

Навигатор для работы с телефонной связью!

handler: function (btn, evt) {
loadURL('http://www.google.com');
}

...

function loadURL(url){
navigator.app.loadUrl(url, { openExternal:true });
return false;
} 

Ответ 10

работает с использованием PHONEGAP 3.5

<a href="javascript:loadURL('http://www.lavidaenbinario.com');" class="link ">Example</a>

function loadURL(url){
    navigator.app.loadUrl(url, { openExternal:true });
    return false;
}