在Safari(cordova)打开一个外部链接

我正试图在我的应用程序,这是一个cordova应用程序中打开外部链接。 现在它在应用程序浏览器中使用模式视图呈现,但它没有后退button或closuresbutton。 当用户点击一个外部链接时,用户基本上被卡住了。 例如,当有人点击“浏览网站”中的链接时,应用程序浏览器出现,网站显示正常,但无法导航回应用程序或closures应用程序浏览器。 我如何去解决这个问题?

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

我看到有一个解决scheme,window.open(“ http://stackoverflow.com ”,“_system”),但我不知道如何在href代码中实现它。

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

 <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代码embedded到href属性中。 这应该做的伎俩:

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

你也将不得不安装InAppBrowser插件(不要被它的名字愚弄)。

正如你可以在这里看到的:混合环境下的所有解决scheme都不适用于iOS和cordova / phonegap新版本。

出于这个原因,我build议使用本地插件,试试这个:

https://github.com/PaoloMessina/OpenUrlExt

这个插件使用Android的这个代码:

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

和iOS的原生Objective-C解决scheme:

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

这个插件可以用plugman来安装:

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

在github自述文件中指定使用非常简单

另外请记住,如果您已经使用来自config.xmlallow-navigation指令将链接的域列入白名单 ,则window.open(url, '_system')解决scheme将无法工作。 (但你可能需要使用一些链接导航和其他一些作为外部链接)。

在这种情况下,你可以使用一些链接缩短服务,如bit.ly,并链接到该url,而不是原来的。