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

3
我正在使用 Phonegap Build 部署我的应用,我使用的是 Cordova 3.3.0 版本。
我想要在原生浏览器中打开外部链接(Android/iOS)。我尝试使用 Cordova 的 InAppBrowser 插件,但它对我不起作用。它能打开链接,但没有返回按钮,始终在应用内部打开链接。
我已经查看了像 包含 phonegap.js 文件 的答案(但是当使用 Phonegap Build 部署时,你不必包含它,因为 PGB 已经为你做了),或者使用 使用一个函数来打开链接 + InAppBrowser 插件,或者甚至有人说这已经被修复了 本地部署,但是由于我的 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个回答

1
我的问题的解决方案是将phonegap.js文件包含到我将使用InAppBrowser的所有页面的<head>中:<script src="phonegap.js"></script>。我稍微解释一下,为什么这个解决方案一开始对我(也可能是你)看起来不合逻辑,但后来我尝试了一下,它确实有效。这就是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)。


0

我需要做两件事才能让它在3.7.0中正常工作。

config.xml

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

In HTML a tags

<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();
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接