2009-05-03 11 views
2

iUIフレームワークを使用してサイトを作成しています。あなたがこれに慣れていない場合は、divで構成された1ページがあり、フラグメント識別子の間でユーザーをナビゲートします。フラグメント識別子にリダイレクト/リフレッシュ

ユーザーがコンテンツを追加したときに、コンテンツが更新されるまで表示されない場合、この問題が発生します。私の推理では、彼らはjqueryの投稿を介してリストにデータを追加しますが、私はリフレッシュするまで何も見ないと言っているように、#fragmentが失われたので親のdivに行くとリフレッシュします。

したがって、更新後、my.website.com/#_fragmentを使用してページをmywebsite.com/#_fragmentに移動しましたが、実際にはページをリロードしません。

誰かが手がかりを持ってページをフラグメントに更新する方法はありますか?

答えて

7

URIフラグメント識別子はクライアント側のみであり、サーバーに送信されません。つまり、HTTP要求ヘッダーを検査すると##フラグメントは表示されません。さらに、フラグメントを変更するだけでURIを変更しても、DOMイベントはトリガーされません。

setInterval()呼び出しを使用してdocument.location.hashプロパティをアクティブに監視するなどの回避策がありますが、最も簡単な方法は単にクエリ文字列argを変更することです。たとえば、代わりに「?リフレッシュ= 1」:

window.location = mywebsite.com/#_fragment 

のようなクエリ文字列コンポーネント含ま

window.location = mywebsite.com/?refresh=1#_fragment 

(または他の任意のキー/値のペア)が存在すると、ブラウザの原因となります#ハッシュ識別子を保持したままサーバーに要求を行います。

は、JSの場所のオブジェクトについての詳細はこちらをご覧ください: http://docs.sun.com/source/816-6408-10/location.htm

1

私はあなたがiPhoneフレンドリーなウェブアプリを構築するためにiUIのを使用していると考えています。あなたがすでに同じかどうかを評価しているかどうかはわかりません。iWebkit私はiUIとiWebkitの両方を見て、iWebkitがはるかに機能的で安定していることも発見しました。&も実装が簡単です。

+0

投稿後にiWebkitを見ました。それはiUIよりも少し面白いように見えます。 iWebkitが各ページのアドレスバーをドロップする場所で、iUIは各ページをうまくスクロールします。また、iUIを使用すると、すべてのjavascriptが一度ダウンロードされ、それがthatsです。 webkitのように見えるのは、データプランに応じて、各ページごとにロードされます。あなたは、そのページに必要なものだけにjavascriptを減らすことができると言っている。スイングとラウンドアラウンド。 –

+0

jqueryまたは任意のajaxフレームワークを使用して、アドレスバーをポップアップさせずに同じページに留まることができます。私はそれをやっているので、基本的にはiUIからiWebkitにいくつかの断片を加えて、致命的なコンボを作り、さらに柔軟性をもたせています。 – Vikram

+0

私はiUIのいくつかの部分を言うとき、私はアドレスバーをポップアップするのではなく、同じページを維持するという概念を意味し、文字通りiUIから作品をコード化していません。要件に合わせて独自の戦略を立てることができます。 – Vikram