jqmのこの歴史的なことは、私を狂わせています...そして私が解決策を持っていると思うたびに、それは私の把握から外れます。
これが重要です:私は動的に生成されたコンテンツアプリを開発しています。ページはJSONファイルから生成され、jsRenderを使用してレンダリングされます。それらは最初のリクエストでDOMにロードされ(私はこれをテンプレート化するjqmマルチページを使用しています)、以下では、その#idを指すchangePageを使用して呼び出されます(私がインスピレーションを得たモデルはこれ: http: //jquerymobile.com/test/docs/pages/page-dynamic.html)。すべて正常に動作しますが、しばらくするとDOMが混雑しすぎて、システム(特に、アプリをロードするスマートフォン)の速度が低下します。解決策は、次のプロジェクトのように、ユーザーがページを残した直後にページをキャンセルすることです:http: //roughlybrilliant.com/jsrender_json_apis_and_jquery_mobile
それは使用します
$.mobile._bindPageRemove
命令。とにかく、それを使用する代わりに、私の最初の試みは、jQueryによって提供される.remove()命令を使用することでした。
$("#" + entity.name + "-" + entityId).bind('pagehide',
function() {
$(this).remove();
});
したがって、ページが非表示になると、DOMから削除されます。たとえば、自分のページのリンクをクリックして別のページに移動すると、開始ページが削除され、新しいページが読み込まれます。ここに戻るボタンがあるので、それを押すと、削除したページに1ステップ戻ります。これで私のコードには、ページを再度作成して表示する関数があります。私のアプリがどのように機能するかについての一般的な考えを持っているだけです。
ここで、リンクのツリーで1レベルより深くなることができるとしましょう。たとえば、レベル2にいて、レベル3に移動してから、2に戻るとします。この場合、レベル2ページには戻るボタンがありません。コード内で存在するように設定したとしても。
jsRenderのテンプレートは次のとおりです。
<script id="header-buttons" type="text/x-jquery-tmpl">
<div data-role="header" data-position="inline" data-backbtn="true">
<h1>{{:name}}</h1>
<a href="#root" class="ui-btn-right" data-icon="home">Home</a>
</div>
</script>
削除命令(または$ .mobile._bindPageRemove)も履歴からページを削除しているためだと思いました。そこで、empty()命令を変更して使用し、divを空にしてから、何を再入力しました。私は必要でした...成功しませんでした。ページにアクセスした後でページを削除すると、ツリーの1レベルしか戻ることができません。
私の目的は、ページを動的にロードするアプリを回避することです。ページを離れたら、履歴を変更せずにDOMから削除したいので、戻ってページをリロードすると、常に戻るボタンが使用可能になります。ページ。
だから私の質問は次のとおりです:jqmで履歴がどのように機能するのですか?jqmがそのコードでページを拡張するとき、どのページを指す必要があるかという戻るボタンの表示を追加しますか?ページに戻るボタンを表示させ、履歴内の前の要素を指すようにするにはどうすればよいですか?DOMから何かを削除しても、履歴からも削除されない可能性はありますか?
助けてくれてありがとう、私の懸念が十分にはっきりしていることを願っています...