PhoneGap Build:如何在Android设备浏览器中打开外部URL?

时间:2013-03-20 21:00:58

标签: javascript android cordova phonegap-build

外部URL无法在我的PhoneGap Android应用程序的系统浏览器中打开。我正在使用PhoneGap Build 2.3.0。

根据Cordova documentation我使用的目标'_system':

window.open('http://www.myurl.nl', '_system');

在我的config.xml中,我有:

<plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser" />
<access origin="*" browserOnly="true" />

但我的应用程序webview中的链接仍然打开。

如何解决这个问题?

6 个答案:

答案 0 :(得分:15)

当您想继续使用PhoneGap Build时,这不是答案,但我通过在我的机器上为Cordova(PhoneGap)设置开发环境并在本地编译应用程序来解决问题。在Cordova 2.5.0 window.open('http://www.myurl.nl', '_system');工作正常,它将打开系统浏览器中的链接。

所以我的建议是停止使用PhoneGap Build并开始在本地编译你的应用程序。 Here's how to set up your development environment for Cordova >>

答案 1 :(得分:14)

迟到的答案,但也许可以帮到某人。

navigator.app.loadUrl('https://google.com/', { openExternal:true });

Cordova 3.3.1

答案 2 :(得分:7)

这个问题现在有点老了,但我觉得值得更新。当与2.9.0一起使用时,现在可以正常使用PhoneGap Build。

我已在Android 4.3和iOS 6.1.3上编译和测试过它。我的应用程序中没有InAppBrowser插件,因为打开应用程序中的页面,而不是让本机浏览器打开它们,而且我只有以下访问标记:

<access origin="http://127.0.0.1*"/>
<access origin="http://phonegap.com" subdomains="true" />

答案 3 :(得分:7)

这对我有用。 Phonegap 3.1.0。

html代码:

<a id="ext-link" href="#">Google it</a>

<button id="ext-link" href="#">Google it</button>

Javascript(使用jQuery + cordova):

$("#ext-link").on("click"), function() {
    if (typeof navigator !== "undefined" && navigator.app) {
        // Mobile device.
        navigator.app.loadUrl('http://www.google.com/', {openExternal: true});
    } else {
        // Possible web browser
        window.open("http://www.google.com/", "_blank");
    }
});

希望有所帮助。

答案 4 :(得分:1)

@George Siggouroglou:对于最终会在文档中出现多次的元素使用id并不是一个好主意。相反,它的优良做法是使代码更加模块化。

如果期待触摸设备,它也是一个很好的选择,使用&#34;点击&#34;之前&#34;点击&#34;因为它比点击更快更快。检查触摸能力的东西我更喜欢使用modernizr因为它使特征检测变得轻而易举。

  

jQuery Mobile点击事件在单个目标对象上发生的快速,完整的触摸事件后触发。它是由触摸手势的释放状态触发的等效于标准点击事件的手势。    https://api.jquerymobile.com/tap/

希望能帮到某人

**html code:**

<a class="ext-link" href="#">Google it</a>

<button class="ext-link" href="#">Google it</button>

Javascript(使用jQuery):

//define tap or click event type on root level (can be combined with modernizr)
iaEvent = "click";
if (typeof navigator !== "undefined" && navigator.app) {
   iaEvent = "tap";
}
$('.ext-link').each.bind(iaEvent, function() {
    if (typeof navigator !== "undefined" && navigator.app) {
        // Mobile device.
        var linktarget = this.attr("href");
        navigator.app.loadUrl(linktarget, {openExternal: true});
    } else {
        // Possible web browser
        window.open(linktarget, "_blank");
    }
});

答案 5 :(得分:-1)

使用此

window.open('http://www.myurl.nl', '_blank', 'location=yes');