5

背景: Android で実行されている Cordova phonegap 2.2 アプリケーションでは、戻るボタン イベントをリッスンできます。

document.addEventListener("backbutton", function(e){ history.back();}

Google マップ API V3 は、Google ロゴが左下隅にある Google マップの Web ページにリンクし、右下隅にクリック可能なライセンス リンクがあるマップを作成します。ロゴまたは利用規約のリンクには、特定の ID/セレクターはありません。

問題 リンクの 1 つをクリックすると、Web ページが target:_blank の Google Web ページにリダイレクトされ、Cordava アプリケーションと同じウィンドウで Web サイトが開きますが、Web ページに独自の Javascript が含まれているため、戻るボタンの機能が失われます。

Web ページの読み込み時にコードを挿入することは可能ですか?

1 つの解決策として、次の方法でリンクを外部から開くことが考えられます。

navigator.app.loadUrl([href here], { openExternal:true } );

しかし、やはりセレクターがないという問題があります。

更新: ライセンス ページまたは Google マップでボタンをクリックすると、logcat に次のエラー メッセージが表示されます: 11-13 16:20:30.500: E/Web Console(31508): Uncaught ReferenceError: cordova is not defined:1

4

3 に答える 3

2

.live()はjQuery v1.9で削除され、Zepto v1.0rc1で非推奨になりました。そのため、最新のフレームワークでうまく機能するはずのkvaaleの回答の改訂版を次に示します。

このバージョンでは、PhoneGap / CordovaのInAppBrowserコードも使用されているため、InAppBrowser(「_blank」を使用)またはシステムWebブラウザー(「_system」を使用)でリンクを開くことができます。

function directUrlToExternalBrowser(urlPattern){
    var pattern = "a[href^='"+urlPattern+"']";      // detect all urls starting with urlPattern

    $(document).on('click', pattern, function(e){
        e.preventDefault();
        var ref = window.open($(pattern).attr("href"), '_system', '');      // '_system' will open the system web browser, '_blank' will open the InAppBrowser
    });
}

次に、次のコードを$(document).ready()関数に配置します...

directUrlToExternalBrowser("http://maps.google.com/maps");
directUrlToExternalBrowser("http://www.google.com/intl");

すべての「ahref」リンク(Googleマップのリンクだけでなく)を検出する場合は、代わりに次のコードを使用してください...

directUrlToExternalBrowser("http://");  
directUrlToExternalBrowser("https://");      
于 2013-02-24T08:10:02.197 に答える
0

Google マップのリンクを交差させる 1 つの方法を次に示します。

jquery が利用可能であると仮定すると、このメソッドをスクリプトに含めることができます。

function directUrlToExternalBrowser(urlPattern) {
  var pattern = "a[href^='"+urlPattern+"']";//all urls startting with urlPattern
  $(pattern).live('click', function(e){
      e.preventDefault();
      navigator.app.loadUrl($(pattern).attr("href"), {openExternal: true});
  });
}

次に、次の行でクリックを phonegap api に転送できます。

directUrlToExternalBrowser("http://maps.google.com/maps");
directUrlToExternalBrowser("http://www.google.com/intl");
于 2012-12-13T23:15:26.347 に答える