0

ここ数時間は、単純な問題であるべき問題に頭を悩ませてきました。

JQuery モバイルの backButton 機能を利用して、ナビゲーション アイコンを持つサイトを構築しようとしています。(JQM は単に window.history.back を呼び出すと理解しています)

このサイトは、デスクトップ ブラウザーとモバイル サファリで期待どおりに完全に機能します。このサイトは Android WebView では機能しません。(実際のハードウェアの「クリア」ボタンが機能し、ユーザーが 1 ページ戻ることは注目に値しますが、JQM アイコンは強調表示されるだけでどこにも行きません。)

ある時点で、私はそれをねじ込み、自分で window.history.back を呼び出しましたが、これは電話では何もしません。

ソフトウェアは次のとおりです。

  • JQuery モバイル 1.1.0
  • コルドバ/PhoneGap 1.9.0
  • アンドロイド 2.2

すでに寄せられた多くの質問を見てきましたが、Android の 1.1.0/1.9.0 の組み合わせで有効と思われる解決策を提供するものはありませんでした。Cordova 1.8 と 1.7 も試しましたが、同じ問題です。

簡単なページ ヘッダーを次に示します。

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript" src="cordova-1.9.0.js"></script>

JQM 組み込み機能を使用した呼び出しを次に示します。

<a href="index.html" data-icon="back" data-iconpos="notext" data-direction="reverse" data-rel="back" data-transition="slide"></a>

これは、私自身の構成を使用した呼び出しです。

$(document).ready(function() {
$("#backButton").click(handleBackButton);
});

function handleBackButton() {
    window.history.back(); //Cordova does something funky with this on Android
}

...

<a id="backButton" href="index.html" data-icon="back" data-iconpos="notext" data-direction="reverse" data-transition="slide"></a>

アップデート

前方ナビゲーション モデルの例については、この Gist を参照してください。4 ページに進むことに注意しdata-ajax="false"てください。

更新 2navigator.app.backHistory()「Cordova Back」として の呼び出しを含めるように要点を更新しました。これは物理ページ間を行き来するように機能しますが、JQM ページの DOM モデルには従いません。両方を統合する方法についてのアイデアはありますか? https://gist.github.com/3039722

コアの Cordova.js コードを変更するのではなく、これを処理するリスナーをアプリに追加することをお勧めします。何か案は?

ありがとう

4

1 に答える 1

3

Cordova1.9およびAndroid2.2で正常に動作します。back3つの異なる方法で使用する:

バックボタンを上書き:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    document.addEventListener("backbutton", handleBackButton, true);
}

function handleBackButton() {
    console.log("back clicked");
    window.history.back();
}

data-rel=back

<a data-rel="back" data-role="button">Rel Back</a>

クリックハンドラー付き

<a id="forceBack" data-role="button">Force Back</a>

...

$("#forceBack").click(function(){
    history.back();
});

完全なソースの場合-https://gist.github.com/3037838

于 2012-07-03T05:27:50.213 に答える