在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.xml
的allow-navigation
指令将链接的域列入白名单 ,则window.open(url, '_system')
解决scheme将无法工作。 (但你可能需要使用一些链接导航和其他一些作为外部链接)。
在这种情况下,你可以使用一些链接缩短服务,如bit.ly,并链接到该url,而不是原来的。