2016-05-10 14 views
5

Chcemy, aby każdy link w aplikacji mógł być otwierany w zewnętrznej przeglądarce w systemie, z wyjątkiem wyboru hostów.Apache Cordova pozwala na przesłonięcie nawigacji przez zezwolenie

Próbowaliśmy umieścić <allow-navigation href="*.hostname.com/*"/>, ale to zostanie przesłonięte, gdy użyjesz <allow-intent href="http://*/*" /> and <allow-intent href="https://*/*" jako znaczników intencji dla wszystkich innych linków w aplikacji.

Spodziewanym rezultatem będą nasze nazwy hostów otwieranych w aplikacji, ale zamiast tego są otwierane w zewnętrznej przeglądarce.

Próbowałem przeglądać wszystkie najnowsze dokumenty i pomoc dostępne w Internecie, ale nie mogłem znaleźć odpowiedzi na moje rozwiązanie. Mam nadzieję, że wiecie.

Edycja: zapomniałem wspomnieć o uruchomieniu najnowszego interfejsu Cordova CLI i najnowszej wtyczki do białej listy z wtyczką inappbrowser.

poważaniem

Daniel

+0

gdzie widzisz ten problem? w systemie iOS? android? obie? Na cordova-ios 4.1.1 powinno to zostać naprawione – jcesarmobile

+0

@ Thrinaria sugerują, aby obejrzeć ten link - http://stackoverflow.com/questions/37127660/cordova-wrapper-app-where-internal-links-load- w-app-external-links-load-in-bro, który zajmował się podobnym problemem: – Gandhi

+0

@jcesarmobile 6.1 zarówno Android, jak i ios. – Thrinaria

Odpowiedz

0

myślę, że trzeba to zrobić ręcznie. Możesz użyć wtyczki inApp Browser, aby to osiągnąć.

  1. Sprawdź link jest wewnętrzny/zewnętrzny (poprzez zaznaczenie hiperłącze zawiera nazwy hosta zawiera lub nie)
  2. Jeśli jest to połączenie zewnętrzne przeglądarka systemu i otworzyć link cordova.InAppBrowser.open('http://external-domain.name', '_system', 'location=yes');
  3. Jeśli jest to wewnętrzny otwarty link wewnątrz InAppBrowser cordova.InAppBrowser.open('http://yourdomain.name', '_blank', 'location=yes');

można zignorować 3rd krok, jeśli nie jest to potrzebne.

Pełny kod:

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

Spróbuj zmienić <allow-*> tagów do tego:

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

Znacznik <allow-navigation> jest do sterowania adresy URL webview Cordova kolei można nawigować do.

Spójrz na to article, aby uzyskać więcej informacji na temat białej listy firmy Cordova.

+0

dozwolony dostęp powinien po prostu być: