4

jQuery Mobileで、デモWebサイトで再現できるいくつかの標準的な動作を見つけました。

  1. http://jquerymobile.com/test/docs/forms/textinputs/直接アクセスします
  2. テキスト入力に何かを入力してください
  3. ページ上の任意のリンクをクリックして、ajax-yアニメーションをお楽しみください
  4. ブラウザの戻るボタンを使用して戻る

結果:テキスト入力に入力されたテキストはまだそこにあります。これが私が欲しいものです。

ただし、サイトのどこかから来た場合、これは壊れます。

  1. http://jquerymobile.com/test/docs/forms/にアクセスします
  2. 「テキスト入力」をクリック
  3. 上から手順2〜4を実行します

結果:テキスト入力に入力されたテキストが消えました。これは私が望むものではありません。

これをChromeforDesktopとWindowsPhoneエミュレーターでテストしましたが、どちらも同じ動作を示しています。テキスト入力に入力されたテキストを常に保持するにはどうすればよいですか?私の場合、これは検索ボックスです。ユーザーが検索結果から戻った後、すべてを再入力しなくても検索用語を絞り込むことができるようにしたいと思います。

4

3 に答える 3

4

これは、docs / formsからアクセスすると、最初はajaxが無効になっているためです。したがって、jQueryMobileはdom-cacheを無効にします。jquerymobile.jsをロードする前にこれを追加することで、domキャッシュを強制できます。

$(document).bind("mobileinit", function() {
    $.mobile.page.prototype.options.domCache = true;
});

編集

私の解決策は機能します、私はそれを試しました:

  • 私のデモページに行きます;

  • 「テキスト入力」をクリックします

  • 「テキスト入力」に何かを入力してください。

  • 左側の「検索入力」をクリックします(私のデモでは一部のリンクだけが機能します)

  • ブラウザの戻るボタンを使用して戻る

あなたのテキストはまだそこにあります!

(注:このページには、問題のある元のバージョンが表示されているため、domCacheがないため、デモを行うためにjQueryMobile-Docs Pagesを複製したときに他に何も変更しなかったことを証明しています)。

于 2012-04-30T10:43:53.067 に答える
0

ぜひお試しください。多くの人の命を救いました。

 $.extend(  $.mobile , {
        ajaxEnabled      : false,
        hashListeningEnabled: false
    });

次のリンクで多くを読むことができます。

http://forum.jquery.com/topic/jquery-mobile-true-browser-back-button-issue

于 2012-04-30T09:29:24.057 に答える
0

私が見つけた最も信頼できる方法は、pagebeforehideを使用してローカルストレージにデータを保存し、必要に応じてpagebeforeshowを使用してデータを元に戻すことです。

于 2012-05-02T18:08:23.673 に答える