2011-09-30 6 views
4

にそれを聞いていない場合でも、DOMにページをロード1.html、2.html、3.html:ボタンをタップ)jQueryのモバイルは、私はシナリオです。ここ

で私は3つのページがあります。

1.html --- window.location="2.html" ---> 2.html

2.html --- <a href="3.html" /> ---> 3.html

 click Back button 

2:私は、以下の方法をナビゲート。 html --- window.location="1.html" - > 1.html

最終ステップ1.htmlはをロードしますが、2.htmlの内容は1.htmlの内容を置き換えるDOM内にロードされます。 2.htmlの内容を参照してください。

何が起こっている

jQuery mobileはなぜ2.htmlの内容を読み込まなければならないと思いますか?

私はそれが歴史と戻るボタンと関係があると確信しています。戻るボタンを使わずに1.htmlと2.htmlの間を移動するだけで動作します。

更新ここにコードhttp://jsfiddle.net/x6bxN/を再現するには、HTMLボックスからコードを取り出し、3つの別々のファイルに分けてください。

+0

多分私はあなたがしようとしていることを理解していません。私はそれを再現できないからです。私はあなたが描写しているものを再現しようとしましたが、それは私のためにうまくいきます。ここに私のサンプルコードです。注:これは3つの別々のHTMLファイルです。私はそれらをすべて同じペーストビンページに貼り付けます。 http://pastebin.com/JkneaERE –

+0

もう少しコードを投稿できますか?多分http://jsfiddle.netとして私はあなたがページ間をどのようにナビゲートしているのかを見たいと思っています –

+0

@PhillPaffordここにjsfiddleへのリンクがありますhttp://jsfiddle.net/x6bxN/私は3つのファイルすべてからhtmlを取り出して挿入しましたそれらをHTMLボックスに変換します。再現するために、それらを3つの別々のファイルに入れたいと思うでしょう。 –

答えて

0

あなたはjQueryのモバイルは、歴史や戻るボタンを処理したい場合は、(window.locationの= ..ではなく)ページを変更するには$ .mobile.changePageを使用する必要があります。ここ

さらに詳しい情報:http://jquerymobile.com/demos/1.0rc1/docs/api/methods.html

+0

ページを切り替えるjQueryのモバイル機能について知っています。私は他の機能を壊すので、私はそれらを使用したくない。したがって私はwindow.locationを使用しています。なぜjQueryモバイルが私のページをハイジャックしようとしているのか、私の混乱。明らかに履歴と戻るボタンと関係があります。 –

0

あなたは、特にあなたのリンク上のデータのajax =「false」に設定しようとしたことがありますか?またはrel = "external"ですが、別のドメインに変更する場合にのみ使用されるはずです。

いずれかを設定しないと、JQMハイジャックが恐れられます。

data-ajax = "false"であれば試してみてください。

実際、私は通常のJQM-Ajaxリンクで同様の問題が発生しています。私は、Ajaxを経由してロードするページをしたいが、私はこのように行う場合:

  • は=リロードのページ1をpage2bに行くpage2aに行くPage1のために行く...

非常に迷惑私はすでにGithubに問題を提出しましたが、Ajaxを使用したくないのであなたは大丈夫です。

動作するかどうか教えてください。起こっされるようになりますどのような

3

あなたはjQMの範囲外でナビゲートしているが、1.htmlはlocation.hashです。ベンAlmanのなhashchange 特別なイベントのプラグインを使用して、ウィンドウオブジェクトにバインドされているように、バックボタンをクリック ユーザーは、なhashchangeイベントを介して処理されているときのように独立してクリックの発生

ハッシュ変化、 ( jQuery Mobileに含まれています)。ハッシュ変更 が発生すると(最初のページが読み込まれたときも)、hashchangeイベント ハンドラはlocation.hashを$ .mobile.changePage() 関数に送信し、参照されたページをロードまたは公開します。

私はそれをロードするが、新しいページに移動しwindow.locationのを使用している間に新しいページを追跡していないときlocation.hashは初期1.htmlを持っていると仮定します。あなたがブラウザの戻るボタンを使用しているので、jQMは最後に追跡された場所を使用します。あなたの場合は1.htmlです。

場所を追跡する必要がある場合は、jQMの$.mobile.changePage()を使用することをお勧めします。 jQMナビゲーションの 詳細は、ドキュメントに記載されています。

+0

location.hashは、いずれのリンクにもURLに#記号がないため、常に空です。 –

+0

1.htmlから移動するとすぐにjQMはこの場所をurlHistoryに追加します。私はあなたがバックボタンを押すとハッシュナビゲーションを追跡するためにjQMを使用していないので、urlHistoryの1.htmlを見つけるだろうと思う。ページに移動する前に、カスタムナビゲーションをlocation.hashにプッシュできる可能性があります。これは問題の解決に役立ちます –

+0

実際には$ .mobile.changePage()メソッドを使用しようとしていますが、イベントを正しく私はreadyイベントの代わりにpageinitを使用すべきであることを知っていますが、このイベントをどのようにフックするかについてはちょっと混乱しています。私はここでは別の質問がありますhttp://stackoverflow.com/questions/7729729/jquery-mobile-binding-to-pageinit-event –

0

野生の推測。 CSSのクラスui-page-activeを.ui-page要素にハードコードしませんでしたか?両方のページが表示されるためです。

+0

nope。しかし、良い推測。 –

関連する問題