2011-12-16 17 views
2

私は、フォームと設定からwindow.location.hashでフラグメント文字列をビルドしています。ユーザーは空白のフォーム入力を離れると結果のURLは、価格が入力されたと言うならURLのハッシュフラグメントで二重スラッシュが大丈夫です

example.com/#search/cars//blue//mazda 

//

それは

example.com/#search/cars/20000/blue//mazda 

だろうことができさて、これは正常に動作します。それは悪い習慣ですか?

+1

私の意見ではそうではありません。私は、MVC3を実行しているときに、Microsoftが自動変換を使用して//一部のケースを作成することに気付きました。 –

答えて

0

私はpushStateと他のヒストリーAPIメソッドは標準がまだ進化していないと思います。開くとRepurposing the Hash Sign for the New Webに関する最近のW3の仕事:

ハッシュ記号(#)URIではもともと静的 「フラグメント識別子」を導入するために使用されたが、最近では、多くより 複雑な方法で使用されていますWeb アプリケーションのJavaScriptによって設定され、解釈されます。

パス名に二重スラッシュを使用すると、通常の動作に違反する可能性がありますが、ハッシュフラグメントは任意の文字列にすることができます。 typeofを実行すると、それは普通の文字列であることがわかります。これは標準ではないため、一般的なユーザーエクスペリエンスを疎かにする可能性があります。しかし、コード賢明なことに、二重スラッシュ、三重スラッシュ、その他何でも自由に感じることができると思います。

window.location.hashプロパティから読み取ったときにescaped charactersがデコードされることを覚えておいてください。

+1

はい、iFrameクロスブラウザーのURlを検査してインターバルチェックを行って変更を確認し、最も一般的な方法はwindow.hashchangeイベントを使用してGmailのように履歴のページ状態を変更するなどの理由でiframe間で状態を渡すようです。 –

+0

はいpushStateは素晴らしいですが、それほどうまくサポートされていません。 –

0

それは少し違和ですが、違法です。

window.hashchangeイベントを使用すると、すばらしいことができます。クリックするとイベントがキャンセルされるので、ダブルリフレッシュは行われません。イベントが発生したときにそれを検出してフォームを変更する必要があります。たとえば、ユーザーが戻るボタンを使用すると、フォームはURLの状態に変更されますが、スクリプトを実行することによってハッシュが変更される時期と、ユーザが前/後を押す。私はあなたが見たい場合はこれを行うコードを持っています。

電子商取引用のハッシュURLを作成する際には、実際のURLと一致する必要があります。したがって、SEOの並べ替えを指定する場合はインデックス可能です。また、バック/フォワードの履歴を使用して作業する必要があります。私はそれのためのいくつかのコードを書いて、あなたはAJAXまたは実際のURLリンク(www.kitgui.com/docswww.klim.com/en-us/shopと多くの多くのあなたはwww.emeraldcode.comを通して見ることができます)にブックマークすることができます。

関連する問題