5

私がやろうとしていることは、非常に単純で、デバイスのブラウザでリンクを開くことですが、思ったより難しいことがわかりました。

プロジェクトを作成し、ios および android プラットフォームを次のように追加します。

$ phonegap create project_name
$ phonegap build ios
$ phonegap build android

私は持っている ; config.xml内(さまざまな方法を試しましたが、何も機能しません)および「stay-in-webview」をfalseに設定します。

www/index.html ファイルに加えた唯一の変更は、リンクを追加することでした。このページには、すべてのデフォルト スクリプト (phonegap.js、js/index.js、および app.initialize() への呼び出し) が含まれています。

これらすべてのリンクを試しましたが、すべて webview 内で開いています。

<a href="#" onclick="window.open('http://www.google.com', '_blank', 'location=yes');">_blank</a>
<a href="#" onclick="window.open('http://www.google.com', '_system', 'location=yes');">_system</a>
<a href="#" onclick="window.open('http://www.google.com', '_system');">_system</a>
<a href="http://www.google.com" target="_blank">target _blank</a>
<a href="http://www.google.com">no target</a>

私が作成したすべてのテストが、ios シミュレーターと android エミュレーターで行われたことを明確にします。

私はかなり多くを検索し、見つけたすべてを試しましたが、何も機能しません。助けてくれてありがとう

4

7 に答える 7

11

Cordova/PhoneGap アプリのリンクをデバイスの既定のブラウザーで開くには、それwindow.open(<url>, '_system');がアクセスに使用されることを確認する必要があります。これを実際に機能させるには、直感に反するかもしれませんが、'InAppBrowser' プラグインを有効にする必要があります。

Cordova バージョン 2.9.0 では、'InAppBrowser' プラグインが組み込まれており、Cordova のconfig.xml. バージョン 3.0.0 以降では、プロジェクト ディレクトリから次のコマンドを実行してプラグインをインストールする必要があります。

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git

「InAppBrowser」がオーバーライドされた実装での 2 番目の引数targetを使用する方法に関する Cordova のドキュメントから:window.open()

target : URL をロードするターゲット。省略可能なパラメータで、デフォルトは_selfです。(文字列)

  • _self: URL がホワイト リストにある場合は Cordova WebView で開き、それ以外の場合は InAppBrowser で開きます。
  • _blank: InAppBrowser で開きます。
  • _system: システムの Web ブラウザで開きます。

懸念事項を分離し、既定のブラウザーで開きたいonclickすべてのものに属性を追加するのを忘れないようにするために、JavaScript を介してその動作を動的にアタッチするのが好きです。<a/>以下は、XHR を介して関連する HTML をリロードした後に動作も再アタッチされる jQuery を使用した例です。また、外部リンクにのみ添付されるため、リンクへの添付も防止されmailto:ます。

$('#idContentwrapper').on('click', '.colofon-text a', function(event) {
    var href = $(this).attr('href');
    if (typeof href !== 'undefined' &&
        href.substr(0, 7) === 'http://')
    {
        event.preventDefault();
        // Open in default browser App (on desktop: open in new window/tab)
        window.open(this.href, '_system', 'location=no');
    }
});
于 2013-08-30T19:32:16.607 に答える
2

これがまだ関連しているかどうかはわかりませんが、5c を与えるために: Cordova 3.3 (PhoneGap Build ではない) アプリで再構成を行ったところ、同じ問題に遭遇しました。そのためのプラグインは本当に必要ありません-必ず次のものとリンクしてください:

<a href="#" onclick="window.open('http://www.google.com', '_system');">_system</a>

...あなたが投稿したように、そして重要なことに、あなたのproject/xml/config.xmlに

<access origin="http://127.0.0.1*"/>

アプリ内ブラウザも無効にしています。

<!--
 <feature name="InAppBrowser">
  <param name="android-package" value="org.apache.cordova.InAppBrowser"/>
</feature>    
--> 

...今は再び正常に動作します;)

于 2014-02-17T02:42:03.017 に答える
0

PhoneGap の inappbrowser を Android で動作させるのに苦労しましたが、うまくいきませんでした。そうは言っても、私は Android のネイティブ機能 (システム ブラウザーとデバイスの戻るボタン) を利用しただけです。<access origin="*" />config.xml ファイルで次の内容をコメントアウトし、リンクにrel="external"を追加しました。ユーザーでした。デバイスがネットワークに接続されているかどうかにかかわらず、システムはこれも処理します。

私の iOS バージョンのアプリは、inappbrowser で正常に動作します。

于 2013-10-09T14:13:11.997 に答える
0

iOS (少なくとも PhoneGap 2.9 では) では、これは機能します。

<a href="http://www.google.com" onclick="window.open(this.href,'_system'); return false;">Open</a>
于 2014-06-04T08:49:00.690 に答える
-2

外部リンクに接続する場合は、rel 属性を使用します。のよう<a rel="external" href="">に、すべてが正しく機能します。

于 2013-09-02T12:31:04.970 に答える