在Ionic/Cordova应用程序之外加载外部链接

8
我正在开发一个Ionic/Cordova应用程序,在其中加载有时包含外部链接的动态源和新闻。我需要在应用程序外部而不是InAppBrowser中加载这些外部链接,即在手机浏览器中加载。
是否可以将此设置为所有链接的默认行为?

你目前尝试了什么?你能编辑你的问题并提供一些代码吗? - Mamoun Benghezal
我通常使用window.open和target system打开外部链接,在这种情况下,我需要动态地在加载的每个链接中执行此操作。 - Francesco Fiori
3个回答

7
为了使用相应的系统应用程序打开URL,您需要白名单插件。如果您的项目基于脚手架演示程序,则应已安装该插件。如果没有(或仅为了确保):
ionic plugin add cordova-plugin-whitelist

安装插件后,您需要指定应用程序中要打开的intend。在您的config.xml文件中添加:

<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
...

根据上述规则,所有以指定协议之一(http、https、tel、sms、mailto等)开头的URI将使用相应的系统应用程序打开。当然,您可以通过将*通配符替换为实际值来更加具体化。
有关详细信息,请参见this article

谢谢,这正是我需要的,可以在没有额外插件的情况下使用系统浏览器打开外部URL。 - keupsonite
今天关于这个话题,没有一个单一的答案可以像这个答案一样简单。 - kumar

2

对于外部链接,您需要使用inAppbrowser插件。在包含插件后,为了在手机浏览器中打开链接,请使用以下代码:

var ref = window.open('http://apache.org', '_system', 'location=yes');

/*
_self: Opens in the Cordova WebView if the URL is in the white list, otherwise it opens in the InAppBrowser.
_blank: Opens in the InAppBrowser.
_system: Opens in the system's web browser.
*/

谢谢,但我的链接嵌入在我使用应用程序加载的源中,我需要一个过滤器或类似的东西来将窗口中的每个链接转换为window.open('http://apache.org', '_system', 'location=yes');。 - Francesco Fiori
我曾经遇到过这样的问题,代码在浏览器中测试时因为我删除了“cordova.js”而无法正常工作。大家不要犯同样的错误 :) - Thylle

2

您需要安装以下插件

 > ionic plugin add cordova-plugin-inappbrowser

index.html文件中

<div class="list">
    <a class="item" href="#" onclick="window.open('http://google.com', '_system', 'location=yes'); return false;">
       Open Browser
    </a>    
</div>

想要了解更多关于这个插件的信息,请访问插件页面


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接