Mam prostą aplikację opakowującą Cordova, która wskazuje zewnętrzną stronę internetową, bez definiowania żadnych własnych widoków.Aplikacja Cordova Wrapper, w której łącza wewnętrzne ładują się w aplikacji, łącza zewnętrzne Ładuj w przeglądarce
Chciałbym wszystkie wewnętrzne linki z tej domeny były załadowane wewnątrz aplikacji, ale wszystkie linki zewnętrzne (http://twitter.com itp), które mają zostać załadowane w przeglądarce systemowej, więc strony mają Back/Forward funkcjonalność.
W zwykłej aplikacji z widokami mogę ustawić target='_system'
, aby wczytać łącza w domyślnej przeglądarce lub użyć cordova-plugin-inappbrowser, aby jawnie otwierać linki w widoku przeglądarki. Niestety w tym przypadku nie mam możliwości edycji kodu po stronie serwera, więc potrzebuję rozwiązania, które działa w aplikacji.
Jeśli zdefiniuję config.xml
jako taką, to w aplikacji będą ładowane zarówno wewnętrzne, jak i zewnętrzne linki.
<content src="http://example.com/" />
<access origin="*" />
<allow-navigation href="*" />
Gdybym określić config.xml
z allow-intent
, a następnie wewnętrzne i zewnętrzne odnośniki są otwierane w przeglądarce systemowej.
<content src="http://example.com/" />
<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
Others mieć suggested użyciu niestandardowych javascript, aby zastąpić target
do _system
, jednak ponieważ nie mają własnych poglądów nie mogę tego zrobić.
Czy możliwe jest zdefiniowanie allow-intent
dla cordova-plugin-whitelist w taki sposób, aby obejmować wszystkie adresy URL, które nie są domeną wewnętrzny?
Czy będę musiał jakoś zastąpić shouldStartLoadWithRequest
w MainViewController
, a następnie zadzwonić pod numer [[UIApplication sharedApplication] openURL:url]
?
jak można to osiągnąć? Niektóre abc.example.com być w nawigacji wewnątrz WebView i xyz.example.com w zewnętrznej przeglądarce ! – NitZRobotKoder