19

リンクを含む可能性のあるニュース記事を表示するPhonegapで作成されたモバイルアプリがあります。これらのリンクを、アプリとは別の適切なブラウザーで開くようにします。Phonegapバージョンを2.0.0から2.1.0にアップグレードした後、AndroidとiOSで同じ結果が得られる単一の方法が見つかりません(2.1より前のiOSでは画面を回転できないため)。


<a href="http://blah">
常にアプリ内で開き、ブラウザツールバーはなく、アプリを終了せずにアプリに戻る方法はありません。iOSは<access origin="http://blah" />config.xmlに従いますが、Androidは従いません。browserOnly="true"どちらも属性を気にしていないようです。

<a href="http://blah" target="_blank">
<access>iPhoneは、許可されている場合(または完全に省略されている 場合)はSafariブラウザー内でこれを開きますが、Androidはアプリ内で開きます。

<preference name="stay-in-webview" value="false" />
これをconfig.xmlに追加しても、まったく違いはありません。

<a href="#" onClick="navigator.app.loadUrl('http://blah',{openExternal:true});return false;">
Androidでのみサポートされており、Chromeブラウザでリンクが開きます。iOSでのエラー。

<a href="#" onClick="window.open('http://blah','_blank','location=yes');return false;">
Phonegapバージョン2.3.0では、これはアプリ内に残りますが、アプリに戻ることができるボタンが付いた安価なブラウザツールバーが上下に表示されます。これは一貫しています...しかし、私が望むものではありません。(バージョン2.1.0では、これによりAndroidがアプリ内で開き、iOSが適切なブラウザーで開きます。)


Phonegap Buildを使用しているため、このソリューションは機能しません。
公式ドキュメントはバージョン1.5.0を参照して書かれたこのブログ投稿を参照しており、私の2.1.0から2.3.0の調査結果はそれらの表と一致しません。
これほど単純なもののプラグインを追加したくありません。

OSに関係なく、アプリのWebビューの外部で、デバイス自体のブラウザーでリンクを開く単一のコードはありますか?

4

4 に答える 4

8

多分それは手遅れではありません。とにかく、これは私たちのコードベースからのものであり、両方のプラットフォームで動作します。

openURL: function(url) {
    if(device.platform === 'Android') {
        navigator.app.loadUrl(url, {openExternal:true});
    } else {
        window.open(url, '_system');
    }
},
于 2013-09-20T14:43:43.493 に答える
1

指摘したいのですが、実際には自分でこれを行うことはできませんでしたが、inAppBrowserプラグインを使用していて、必要な権限を持つconfig.xmlで指定されていますか?

このhttp://docs.phonegap.com/en/3.3.0/cordova_inappbrowser_inappbrowser.md.html#InAppBrowserによると、次を使用する必要があります。

var ref = window.open(url, target, options);

target: The target in which to load the URL, an optional parameter that defaults to _self. (String)

_self: Opens in the Cordova WebView if the URL is in the white list, otherwise it opens in the InAppBrowser.
_blank: Opens in the InAppBrowser.
_system: Opens in the system's web browser.
于 2013-12-23T00:57:14.373 に答える
1

inAppBrowserプラグインをインストールし、jQuerys .on('click')メソッドを使用してこの関数onDeviceReady関数を実行する必要があります。

function hijack_externalLinks(){

    $(document).on('click', "a[href^='http://']", function (e) {

         window.open( this.href , '_system', 'location=yes' );
         this.href = '/#';

          });
}
于 2014-07-25T16:09:00.547 に答える
0

PhoneGap 2.5.0のドキュメントには、「_ blank」、「_ self」、「_ system」のターゲットがサポートされていると記載されています。これらのいずれかで、必要なことを実行できますか?私はまだ適切なテスト環境を設定していないので、ここで推測していますが、まだこれを試すことはできません。

于 2013-03-25T15:43:32.403 に答える