在Phonegap Build App(iOS / Android)中打开外部链接

时间:2014-06-05 19:46:02

标签: cordova phonegap-plugins phonegap-build inappbrowser

我使用 Phonegap Build 部署mi Apps,我使用 Cordova 3.3.0 版本。

我希望在原生浏览器中打开外部链接( Android / iOS )。我尝试使用Cordova的 InAppBrowser插件,但它对我不起作用。打开链接,但在应用程序内部没有后退按钮...:/

我已经看过像Include phonegap.js file这样的答案(但是当使用Phonegap Build部署时,你不必包含它,PGB为你做),或使用或using a function to open links + InAppBrowser Plugin,甚至是谁说这是固定的deploying locally,但我无法在本地部署,因为我的Mac不支持新版本的XCode和iOS SDK'第

这是我 config.xml 的相关代码:

<preference name="phonegap-version" value="3.3.0" />
<gap:plugin name="org.apache.cordova.inappbrowser" version="0.3.3" />
<feature name="InAppBrowser">
    <param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser" />
    <param name="ios-package" value="CDVInAppBrowser" />
</feature>
<access origin="*" />

这是 JS功能我一直在尝试:

function abrirURL(url){
    if(device.platform === 'Android') {
        navigator.app.loadUrl(url, {openExternal:true});
    } else {
        window.open(url, '_system');
    }
}

我试过的链接,从最基本到功能的使用:

<a href="http://www.example.com" target="_blank">Link</a>
<a href="#" onClick="abrirURL('http://www.example.com');">Link</a>
<a href="#" onClick="window.open('http://www.example.com', '_blank');">
<a href="#" onClick="window.open('http://www.example.com', '_system');">

这对我没什么用,有人请帮助我。谢谢!

2 个答案:

答案 0 :(得分:1)

在我将使用InAppBrowser的所有页面中,我的<head>问题的解决方案为include phonegap.js file<script src="phonegap.js"></script>

我会稍微解释一下,为什么这个解决方案在第一时间对我来说似乎不合逻辑(也许你也是),但后来我尝试了它的确有效。

这就是他的plugin documentation部分中的Phonegap所说的内容:

  

“如果插件使用js-module元素指示cordova加载插件javascripts,则加载插件时不需要<script>引用。核心就是这种情况cordova插件

InAppBrowser是一个核心的cordova插件。但是出于某些奇怪的原因,在包含phonegap.js文件(至少在0.3.3版本中)之前不起作用。

注意:我发现了一个错误。有些人说您必须包含3个文件:phonegap.jscordova.jscordova_plugins.js。但是当我包含这3个文件时,我的应用程序在iOS 7中工作正常,但在iOS 6中忽略了插件的使用(使用:Cordova 3.3.0 + Phonegap Build + InAppBrowser 0.3.3)。

答案 1 :(得分:0)

我需要做两件事才能让它在3.7.0中运行。

config.xml中

<gap:plugin name="org.apache.cordova.inappbrowser" />

在HTML中标记

<a onclick="window.open(this.href,'_system','location=no');return false;" href="http://stackoverflow.com">

我实际上写了一个函数来处理这个,所以我的HTML将是正常的

$(document).on('click','a',function(e) {
    if ($(this).attr('target') === '_blank') {
        window.open($(this).attr('href'),'_system','location=no');
        e.preventDefault();
    }
});