2016-05-10 1 views
5

Nous voulons que chaque lien de l'application puisse être ouvert dans le navigateur externe du système, à l'exception d'une sélection de noms d'hôtes.Apache Cordova allow-navigation remplacé par allow-intention

Nous avons essayé de mettre <allow-navigation href="*.hostname.com/*"/>, mais cela est remplacé lorsque vous utilisez <allow-intent href="http://*/*" /> and <allow-intent href="https://*/*" comme balises d'intention pour tous les autres liens de l'application.

Le résultat attendu serait l'ouverture de nos noms d'hôtes dans l'application, mais ils s'ouvrent à la place sur le navigateur externe.

J'ai essayé d'examiner toute la documentation récente et l'aide disponible sur le net, mais je n'ai pas trouvé de réponse à ma solution. J'espère que vous le savez. Edit: oubliez de mentionner que nous utilisons la dernière version de l'interface CLI de cordova et le dernier plugin de liste blanche avec le plugin inappbrowser.

Sincèrement,

Daniel

+0

Où voyez-vous ce problème? sur iOS? Android? tous les deux? Sur cordova-ios 4.1.1 cela devrait être corrigé – jcesarmobile

+0

@ Thrinaria vous suggère de jeter un oeil à ce lien - http://stackoverflow.com/questions/37127660/cordova-wrapper-app-where-internal-links-load- in-app-external-liens-load-in-bro qui a traité un problème similaire – Gandhi

+0

@jcesarmobile 6.1 android et ios. – Thrinaria

Répondre

0

Je pense que vous devez le faire manuellement. Vous pouvez utiliser le plugin inApp Browser pour y parvenir.

  1. Vérifiez le lien est interne/externe (En cochant le lien hypertexte contient votre nom d'hôte contient ou non)
  2. Si elle est appel externe du navigateur du système et ouvrez le lien cordova.InAppBrowser.open('http://external-domain.name', '_system', 'location=yes');
  3. Si elle est ouverte interne le lien intérieur InAppBrowser cordova.InAppBrowser.open('http://yourdomain.name', '_blank', 'location=yes');

vous pouvez ignorer 3ème étape si vous n'avez pas besoin.

code complet:

$(document).on("click","a",function(e){   
     var hrefs = $(this).attr("href");   

     if(hrefs.indexOf("yourdomain") > -1) { 
      //Open link inside inAppBrowser 
      cordova.InAppBrowser.open(hrefs, '_blank', 'location=yes'); 
      e.preventDefault();//To prevent default click 
     } 
     else { 
      //Open link inside system browser 
      cordova.InAppBrowser.open(hrefs, '_system', 'location=yes'); 
      e.preventDefault();//To prevent default click 
     } 
}) 
1

Essayez de changer <allow-*> balises à ceci:

<allow-intent href="*.hostname.com/*" 
<allow-navigation href="https://*/*" 
<allow-navigation href="http://*/*" 
<allow-access href="https://*/*" 
<allow-access href="http://*/*" 

La balise est <allow-navigation> pour contrôler urls WebView Cordova lui-même peut être naviguées.

Regardez ce article pour une meilleure compréhension de la Whitelist de Cordova.

+0

allow-access devrait simplement être