2013-03-20 7 views
18

私のPhoneGap Androidアプリケーションでシステムのブラウザで外部URLが開かない。 PhoneGap Build 2.3.0を使用しています。PhoneGap Build:Androidのデバイスブラウザで外部URLを開く方法

私はターゲットの_system 'が使用Cordova documentationによると:私のconfig.xmlに

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

を私が持っている:

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

しかし、私のアプリのWebViewで開いてまだリンクしています。

これを解決するにはどうすればよいですか?

+0

それはAndroidではデフォルトでうまくいくようですが(Crosswalkプラグインも使用しています...)。 2015年の答えをここで確認して、WebViewで '_self'を、外部ブラウザで' _blank'を開きます:http://stackoverflow.com/questions/32208609/cordova-why-would-inappbrowser-plugin-be-required-to-open -links-in-system-brows/32227524 –

答えて

15

を使用しますアプリはローカルにありますCordova 2.5.0 window.open('http://www.myurl.nl', '_system');が完璧に動作すると、システムのブラウザにリンクが開きます。

私のアドバイスは、PhoneGap Buildの使用をやめ、アプリケーションをローカルでコンパイルすることです。 Here's how to set up your development environment for Cordova >>

+0

あなたはローカルコンパイルとphonegapのビルドとの違いが何であるかを解説できますか? – realtebo

+1

ほとんどの違いは設定にあります。ローカルでコンパイルすると、特定の設定を変更する方が簡単です。しかし、PhoneGap BuildのCordova 2.5では、ローカルにインストールした場合と同じ結果が得られないため、コアコードに若干の違いがありますが、その理由は分かりません。 – Joan

+0

@ジョアン本当に私はそれがphonegapのビルドの問題だと確信していません。適切なプラグイン宣言を使用していて、プラグインが実質的にあなたのアプリにPhonegapでロードされていますか?私は、 'plugin'タグの代わりに' gap:plugin'を使っている人たちが私の場合には –

-1

ビルドのPhoneGapを使用して維持したいときには、答えではないのですが、私は私のマシン上でコルドバのための開発環境(PhoneGapの)を設定してコンパイルすることで問題を解決し、この

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

+13

いいえ、動作しません。 – Joan

+0

なぜこのコメントに投票しましたか? phonegapウェブサイトをチェックすると、このコマンドラインはInAppBrowserインストールガイドのac/pです。 https://github.com/apache/cordova-plugin-inappbrowser/blob/dev/doc/index.md あなたのプロフィールも投票されるべきです – Dimitri

+0

あなたのソリューションは、InAppBrowserプラグインが動作することを要求しているはずです。さもなければそれはしません。 –

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" /> 
+0

を試してみる価値があると見てきました。ありがとうございました:) –

+0

with phonegap 3.0、android cli build –

14

後期の答えを、誰かを助けることができるかもしれません。

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

コルドバ3.3.1

+0

これは私のためにかなりバグだった、私のアプリはリンクが一度クリックされたにもかかわらず、複数のタブを読み込むだろう! –

+0

@IanJamieson oh!何とかそれは今私のために働いています – AtanuCSE

+0

私も、タップイベントを聞くためにハンマーJSを使用して終了し、これはリンクが複数回開いているのを防ぎました。 –

6

これは私のために働きました。 Phonegap 3.1.0。

htmlコード:

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

または

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

のJavascript(jQueryを使って+のコルドバ):助け

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

希望。

+1

助けてくれません 04-11 11:47:48.186:E/Web Console(22063):未知の型エラー:未定義のメソッド 'loadUrl'を呼び出せません:88 – Dimitri

1

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

タッチデバイスが期待される場合は、クリックよりもはるかに早く早く起動するため、「クリック」する前に「タップ」を使用することをお勧めします。タッチ可能なものをチェックするために、私はmodernizrを使うのが好きです。なぜなら、それは機能の検出を簡単にするからです。

The jQuery Mobile tap event triggers after a quick, complete touch event that occurs on a single target object. It is the gesture equivalent of a standard click event that is triggered on the release state of the touch gesture. https://api.jquerymobile.com/tap/

誰か

**html code:** 

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

または

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

(jQueryを使って)Javascriptを助け希望:

//define tab or click event type on rool 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"); 
    } 
}); 
関連する問題