在 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.xml
的allow-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”