J'utilise phonegap (Cordova 2.2)
J'ai un lien comme ça:
<a href="http://Twitter.com/foobar" target="_blank">Twitter</a>
Sur iOS - ouvre le lien dans le navigateur (Safari)
Mais sur Android - il s'ouvre dans la visualisation Web (dans mon application phonegap)
Existe-t-il un moyen de faire fonctionner Android de la même manière qu'iOS?
Voici comment je l'ai fait fonctionner avec Cordova 2.2 et jQuery mobile sur 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>
Essayez ceci pour Android:
function loadURL(url){
navigator.app.loadUrl(url, { openExternal:true });
return false;
}
Html:
<a click="loadURL('http://Twitter.com/foobar')">Twitter</a>
Vous pouvez aussi essayer ceci dans votre config.xml
:
<access Origin="*Twitter.com" browserOnly="true"/>
Le lien fourni par user1879822 était en fait le plus utile pour moi: https://build.phonegap.com/blog/access-tags
En résumé, PhoneGap dispose d'une liste blanche d'URL autorisées dans son fichier config.xml. Cela signifie que s'il y a une entrée comme celle-ci ...
<access Origin="*" />
... il tentera d'ouvrir les liens all dans sa propre vue Web. Toutefois, si vous limitez votre liste blanche à des URL spécifiques uniquement, tout lien vers une URL not dans cette liste s'ouvrira automatiquement dans un navigateur externe, et non dans votre vue Web locale. Par exemple, si vous le contraignez uniquement à cela ...
<access Origin="http://127.0.0.1*" />
... alors le lien Twitter mentionné dans la question initiale devrait s'ouvrir dans un nouveau navigateur externe.
Si vous souhaitez utiliser comme dans la version ios, avec les attributs target="_blank"
:
$(document).on('tap', 'a[target="_blank"]', function(e){
navigator.app.loadUrl(e.target.href, { openExternal: true });
return false;
});
Même si cette question a été posée il y a quelque temps, je voulais vous informer de l'entrée de blod suivante qui m'a aidé:
https://build.phonegap.com/blog/access-tags
Sous Android, tout ce que je devais faire était de désélectionner mon domaine spécifié. Donc, dans mon config.xml, je n’ai pas du tout.
J'ai eu exactement le même problème et j'ai remarqué que la plupart des réponses sont confondues pour différentes plateformes. La solution fonctionne pour moi est Explication détaillée pour différentes plates-formes
J'utilise ceci comme règle générale:
$('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;
}
});
Navigator for phonegap fonctionne!
handler: function (btn, evt) {
loadURL('http://www.google.com');
}
...
function loadURL(url){
navigator.app.loadUrl(url, { openExternal:true });
return false;
}
Cela a fonctionné pour moi sur iOS
$("a[target='_blank']").on('tap touch click',function(e){
e.stopPropagation();
e.preventDefault();
window.open($(this).attr('href'), "_system");
return false;
});