2010-11-27 5 views
7

私はページ間でデータを渡すためにハッシュを使用しており(scrollTop()などの設定)、hashChangeイベントを使用して特定のページの変更をトリガーしています。クエリ文字列のためのhashchangeのようなイベントはありますか?

しかし、ハッシュには、ページを特定の(時には重要ではない)スポットにジャンプさせるなど、私が必ずしも興味を持っていないデフォルトの振る舞いがあります。

私は、クエリ文字列は、複数の論理だろう設定/取得のように感じるが、:それは

  1. ですか?

  2. クエリ文字列が設定されているときにリッスンできるイベントはありますか?

  3. 私が知っておくべきクエリ文字列に関連する動作はありますか?

答えて

1
  1. アンカーの振る舞いを再考するのは理論的ではありません。重要でないフラグメントにハッシュリンクを公開しない方が良い(最新のブラウザではidの要素にはscrollIntoView()を実行しているが、<a name="xxx">の専用の動作がある)。だから、ここでは答えはイエスです。ページ引数はクエリ文字列で渡す必要があります。 http://xkr.us/js/querystring

  2. イベントはjavascript:void(location.search='some')されているは、クエリ文字列での作業に、またlook

を持って、

  • は何の驚きはありませんし、はい、ページのリロード、window.beforeunloadです
  • 1

    あなたの作業内容によって異なります。

    クエリ文字列を変更すると、常にページが読み込まれます。ページのリロードなしに変更できるURLの唯一の部分は#-partです。

    JavaScriptアプリケーションでは、ページの読み込みは一般的に問題ありません。しかし、従来のhtmlページのリクエスト/レスポンス・モデルを使用する場合には、これを使用することができます。

    AFAIKのイベントはありませんが、ページが変更されるためです。

    1

    もう1つの答えで言えば、クエリ文字列を変更すると、ページが再読み込みされます。ブラウザに関する限り、完全に新しいページになります。

    これを実行すると発生するイベントがあります。 'beforeunload`イベントは起動しますが、ユーザーがリンクをクリックしたりウィンドウを閉じるときに起動するため、あまり役に立ちません。

    効果的に、クエリ文字列を変更すると発生するイベントは、ロードする新しいページのロードイベントになります。

    関連する問題