2016-05-10 15 views
5

Wir wollen, dass jeder Link in der App im externen Browser auf dem System geöffnet werden kann, mit Ausnahme einer Auswahl von Hostnamen.Apache Cordova erlauben-Navigation überschrieben durch Allow-Intent

Wir haben versucht, setzen <allow-navigation href="*.hostname.com/*"/>, aber das wird überschrieben, wenn Sie <allow-intent href="http://*/*" /> and <allow-intent href="https://*/*" als die Absicht Tags für alle anderen Links in der App verwenden.

Das erwartete Ergebnis wäre, dass unsere Hostnamen in der App geöffnet werden, aber stattdessen auf dem externen Browser geöffnet werden.

Ich habe versucht, alle aktuellen Dokumentation und Hilfe im Internet zu sehen, konnte aber keine Antwort auf meine Lösung finden. Ich hoffe, ihr wisst es.

Edit: vergessen zu erwähnen, wir laufen die neuesten cordova CLI und die neuesten Whitelist-Plugin mit dem inappbrowser Plugin.

Mit freundlichen Grüßen,

Daniel

+0

Wo sehen Sie dieses Problem? auf iOS? Android? beide? Auf cordova-ios 4.1.1 sollte dies behoben werden – jcesarmobile

+0

@Thrinaria vorschlagen, dass Sie einen Blick auf diesen Link - http://StackOverflow.com/Questions/37127660/cordova-Wrapper-App-White-internal-Links-load- In-App-externe-Links-load-in-bro, die ein ähnliches Problem behandelt – Gandhi

+0

@jcesarmobile 6.1 sowohl Android und iOS. – Thrinaria

Antwort

0

Ich glaube, Sie müssen es manuell tun. Sie können dazu das Plugin inApp Browser verwenden.

  1. Überprüfen Sie den Link intern/extern (durch den Hyperlink Überprüfung enthält Ihren Hostnamen enthält oder nicht)
  2. Wenn es externen Anruf-Browser des Systems ist, und öffnen Sie den Link cordova.InAppBrowser.open('http://external-domain.name', '_system', 'location=yes');
  3. Wenn es offen ist intern der Link innerhalb InAppBrowser cordova.InAppBrowser.open('http://yourdomain.name', '_blank', 'location=yes');

können Sie dritten Schritt ignorieren, wenn Sie es nicht brauchen.

Voll Code:

$(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

Versuchen Sie, Ihre <allow-*> Tags zu diesem Wechsel:

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

Die <allow-navigation>-Tag ist für Urls die Cordova webview Steuerung selbst navigiert werden kann.

Betrachten Sie diese article für ein besseres Verständnis auf Cordova Whitelist.

+0

allow-access sollte nur sein, d. H.