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?
Ответы
Ответ 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;
}
});
Ответ 6
У меня была такая же точная проблема, и я заметил, что большинство ответов смешиваются для разных платформ. Решение для меня работает Подробное объяснение для разных платформ
Ответ 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;
}