我们希望应用程序上的每个链接都能够在系统的外部浏览器中打开,但选择的主机名除外。
我们尝试添加<allow-navigation href="*.hostname.com/*"/>
,但是当您使用<allow-intent href="http://*/*" /> and <allow-intent href="https://*/*"
作为应用中所有其他链接的intent标记时,会覆盖此内容。
预期的结果是我们的主机名在应用程序中打开,但它们在外部浏览器上打开。
我已经尝试查看网上提供的所有最新文档和帮助,但无法找到我的解决方案的答案。希望你们知道。
编辑:忘了提及我们使用inappbrowser插件运行最新的cordova CLI和最新的白名单插件。
此致
丹尼尔
答案 0 :(得分:1)
尝试更改<allow-*
&gt;标签:
<allow-intent href="*.hostname.com/*"
<allow-navigation href="https://*/*"
<allow-navigation href="http://*/*"
<allow-access href="https://*/*"
<allow-access href="http://*/*"
<allow-navigation>
标记用于控制可以导航到Cordova webview本身的网址。
请查看此article以更好地了解Cordova的白名单。
答案 1 :(得分:0)
我认为你需要手动完成。您可以使用inApp Browser插件来实现此目的。
cordova.InAppBrowser.open('http://external-domain.name', '_system', 'location=yes');
cordova.InAppBrowser.open('http://yourdomain.name', '_blank', 'location=yes');
如果您不需要,可以忽略第3步。
完整代码:
$(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
}
})