在 Safari (cordova) 中打开外部链接

Posted

技术标签:

【中文标题】在 Safari (cordova) 中打开外部链接【英文标题】:Open an external link in Safari (cordova) 【发布时间】:2015-07-16 18:24:06 【问题描述】:

我正在尝试在我的应用程序中打开一个外部 url 链接,该应用程序是一个 cordova 应用程序。现在它使用模态视图呈现一个应用内浏览器,但它没有后退按钮或关闭按钮。用户在单击外部链接时基本上会卡住。例如,当有人单击包含在“访问网站”中的此链接时,会显示应用内浏览器,网站显示正常,但无法导航回应用程序或关闭应用内浏览器。我该如何解决这个问题?

<a href="http://www.sdtaproom.com/" target="_blank">Visit Website</a>

看到有解决方案,window.open("http://***.com", "_system");,但是在href代码中不知道怎么实现。

回答(已编辑):将此代码添加到头部的脚本标记中。

<script src="cordova.js"></script>
<script type="text/javascript">
window.addEventListener('load', function () 
  $(document).on('click', 'a[target="_system"],a[target="_blank"]', function (e) 
    e.preventDefault();
    var url = this.href;
    window.open(url,"_system");
  );
, false);
</script>

【问题讨论】:

您必须使用 javascript 选择所有链接,然后选择 href 并在 window.open 函数中使用它 你能举个代码例子吗? 【参考方案1】:

您可以在href 属性中嵌入javascript 代码。这应该可以解决问题:

<a href="javascript: window.open('http://www.sdtaproom.com/', '_system'); return false;">Visit Website</a>

您还必须安装 InAppBrowser 插件(不要被它的名字所迷惑)。

【讨论】:

太糟糕了 - 它在我们的一个应用程序中运行。我们还安装了InAppBrowser 插件。 (不要被它的名字所迷惑。)您可能想检查一下这是否有所作为。 没有工作...嗯。你用的是什么版本的cordova? 我使用的是 3.5.0 版 我想通了。安装了插件,将我编辑的问题中的代码添加到标题中的脚本标记中,并且可以正常工作。谢谢。 @Glorfindel 我还发现有必要添加 InAppBrowser 插件,你能更新你的答案吗?【参考方案2】:

如您所见 here: 混合上下文中的所有解决方案均不适用于 ios 和 cordova/phonegap 较新版本。

因此我建议使用原生插件,试试这个:

https://github.com/PaoloMessina/OpenUrlExt

这个插件在 android 上使用这个代码:

navigator.app.loadUrl(<my_url>, openExternal : true);

以及适用于 iOS 的原生 Objective-C 解决方案:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:<my_url>]]; 

这个插件可以用plugman安装:

cordova plugin add https://github.com/PaoloMessina/OpenUrlExt

而且使用起来非常简单,如 github README 中所述

【讨论】:

【参考方案3】:

另外请记住,如果您使用来自config.xmlallow-navigation 指令将链接域列入白名单,则window.open(url, '_system') 解决方案将不起作用。 (但您可能希望使用一些导航链接和一些其他链接作为外部链接)。

在这种情况下,您可以使用一些链接缩短服务,例如 bit.ly,并链接到该网址而不是原始网址。

【讨论】:

以上是关于在 Safari (cordova) 中打开外部链接的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap/Cordova 打开外部链接到 Safari 而不是全屏 inApp

使用 Phonegap 在 iPad 上的 safari 中打开外部 url

Cordova 3.1 在 iOS6 上的 Safari 中打开链接

Cordova/Phonegap 3.3 中的外部链接/InAppBrowser 总是表现得像“_self”

从应用内链接打开 Safari - Cordova PhoneGap

从 Cordova 应用程序打开 Safari 网页