web-dev-qa-db-ja.com

PhoneGap Build:Androidのデバイスブラウザーで外部URLを開く方法

PhoneGapのシステムのブラウザーで外部URLが開かないAndroidアプリケーション。PhoneGapBuild 2.3.0を使用しています。

Cordovaドキュメント によると、ターゲット '_system'を使用しました:

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

私のconfig.xmlには次のものがあります:

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

ただし、リンクはアプリのWebビューで開きます。

これを解決するには?

18
Joan

PhoneGap Buildを使い続けたいときの答えではありませんが、私のマシンでCordova(PhoneGap)の開発環境をセットアップし、アプリをローカルでコンパイルすることで問題を解決しました。 Cordova 2.5.0では、window.open('http://www.myurl.nl', '_system');は完璧に機能し、システムのブラウザーでリンクを開きます。

したがって、PhoneGap Buildの使用を停止し、アプリをローカルでコンパイルし始めることをお勧めします。 コルドバの開発環境をセットアップする方法>>

15
Joan

遅い答えですが、誰かを助けることができるかもしれません。

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

Cordova 3.3.1

14
AtanuCSE

この質問はもう少し古いですが、更新する価値があると感じました。 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" />
7
boodle

これは私のために働いた。 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");
    }
});

お役に立てば幸いです。

7

@George Siggouroglou:最終的にドキュメントに複数回現れる要素にidを使用するのは得策ではありません。代わりに、コードをよりモジュール化することをお勧めします。

タッチデバイスを想定している場合は、クリックよりも早く、より早く起動するため、「クリック」の前に「タップ」を使用することをお勧めします。タッチ対応のものをチェックするには、機能検出を簡単にするため、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");
    }
});
1
mrmoree