2011-12-27 6 views
1

REST APIと通信するブラウザで実行するためのHTMLとJavascriptクライアントを作成しています。私はRouteMapを使用してURLを設定しています。だから私はこのユーザーが同じリンクをクリックしたときにHashchangeが起動しない

http://mysite.com/#/{ResourceName}/[edit|view|list]/[Id]/ 

のような大会に何かを守ってきた私はちょうど1ルートを設定していると私はなhashchangeに囲まれた関数の中で、これらのパラメータをつかみました。ほとんどのものは正常に動作します。ちょうど2つの問題と私はそれらのために立ち往生しています。

  1. ユーザーが同じリンクを2回クリックすると、hashchangeイベントは発生しません。はい、ハッシュは変更されていないので、明らかにそれは起動しません。しかし、できることがなければならないし、私はそれを欠いている。
  2. ハッシュリンクを変更したくないUIで何かを変更した場合(新しいdivを表示して非表示にするなど)、その履歴が失われ、戻るボタンを適切にクリックして戻ることはできません。

ご協力いただけると助かります。

答えて

1

#1の場合、おそらくリンククリックイベントにハンドラをアタッチする必要があります。そうすれば、リンクがクリックされているかどうかを知ることができます。 onhashchangeを使用するときは、クリックイベントに何かを添付して、ポリッシュをオンハッシュチェンジするのに役立ちます。なぜなら、少なくとも失敗したときはわかります。

#2の場合、ユーザーの履歴を自動的に変更するのは問題があることを指摘したいと思います。誰かの履歴を、意味のないハッシュ変更で満たすことができます。ユーザーが実際にやりとりするときの履歴の変更のみをお勧めします。それどころか、HTML5はpushStatepopStateを提供しています。 Reference

関連する問題