7

私は次のリンクを通過しましたが、私の状況はそれと同じです。

jQuery Mobile でハードウェア バック機能を無効にする

状況:テスト対象のデバイス: Samsung Galaxy S III

ページ A: Names(A1、A2、A3) を含む ListView
ページ B:フォーム送信、およびキャンセルボタンで構成されます。

ユーザーはフォームに入力し、[送信] ボタンをクリックします。そして、彼/彼女のデータがサーバーにアップロードされます。ページが更新され、データがサーバーにアップロードされたことを示す確認ダイアログが表示されます。

さて、問題が到着しました。

ここで、ユーザーがハードウェアの[戻る] ボタンをクリックすると、ページ B に再びリダイレクトされ、フォームを送信できるようになります (フォームは 1 回だけ入力する必要があるため、これは必要ありません)。

ハードウェアの戻るボタンを制御して、ページ B にあるときは常にページ A を表示する方法はありますか?

Nirmal からの次の回答には回答があるようですが、実装方法がわかりません -

BlackBerry または Android でハードウェアの [戻る] ボタンを無効にする実際の方法はありません。

あなたができることは、バックハンドラーで無効になるセッション変数を維持し、試験ページの pagebeforeshow イベントでそのセッション変数をチェックすることです。

どうすればこれを修正できますか?

4

3 に答える 3

2

クッキーを使用してください。フォームが処理されるたびに、ユーザーのCookieに値を追加し、フォームページでそのCookie値が存在するかどうかを確認します。

その場合は、データがすでに送信されていることを示すメッセージをユーザーに表示するか、ユーザーをメインページにリダイレクトします。

于 2012-10-12T13:21:50.190 に答える
2

JavaScriptを使用してハードウェアの戻るボタンのクリックイベントをキャプチャできるはずです。

$(document).bind('keydown', function(event) {
  if (event.keyCode == 27) {
    // Prevent default (disable the back button behavior)
    event.preventDefault();

    // Your code to show another page or whatever...
  }
});
于 2012-10-12T13:35:44.240 に答える
1

I included the Login form and the page the user is directed after login, in the same HTML file as two pages (multi-page containers).

After validating the login, I call the changePage to the id of the new page I want to load with changeHash as false. This way, the user won't be returned to the login even by the hardware back button.

于 2013-04-30T13:53:50.857 に答える