質問
Gmailは、メールをクリックしたときにページを区別するために#を使用します(+ Ajaxアクション)。 http://mail.google.com/mail/#inbox/1238e709e37a1394
見つかった: Googleは検索の代わりに#を使用していますか? URLで。なぜですか?
FFまたはChromeでは、これらのURL間で更新せずに進むと戻るを使用できます。 http://X.com/MyPage.aspx#1 http://X.com/MyPage.aspx#2 http://X.com/MyPage.aspx#3
ただし、IEではページが更新され、戻るアクションが行われたときに#の後のパラメーターはカウントされません。
Gmailが魔法を起こす方法
解決 2
これは私が探していたものです: http://nix.lv/history/demo.html#3
それを見つけました: アンカーをie6履歴に保存
他のヒント
この問題に直面し解決したので、これに対する答えを提供できます。
最初にここで理解するべきいくつかの概念があります:
- javascriptはブラウザの履歴を直接変更できません。
- ページ内のiframeのベースURLが変更されるたびに、履歴が更新されます。 (ただし、これには異なるブラウザでのいくつかの癖があります)。
- URLに「ハッシュ」があります一部:たとえば、URL
http://mail.google.com/mail#inbox
の#inbox
はハッシュされた部分です。それを「ハッシュ」と呼びましょう。http://mail.google.com/mail
が"ベースURL"になります。
GMailによる履歴の追跡は、主にこの「ハッシュ」に基づくトリックを使用して行われます。
したがって、さらにいくつかの概念:
- アドレスバーのURLが変更されると、履歴が更新されます(前のURLが履歴に入ります)
- ベースURLが変更されると、ページがリロードされます。
- ベースURLを変更せずにURLのハッシュ部分を変更すると、ページはリロードされません。
つまり、 http://mail.google.com/mail#inbox
から http://mail.google.com/mail#sent
に移動すると、ページは更新されません。
今、ハッシュが変更されたときにGMailがイベント通知を受け取る場合、Gmailはそれに基づいてアクションを実行できます。残念ながら、履歴アクションをキャプチャするのに役立つDOMイベントはありません。代わりに(これは私が問題をどのように克服したかを示す部分です)、ハッシュの変更をチェックする無限ループを実行します。変更を確認した場合、「戻る」クリックが検出されます。または" forward"ブラウザのボタン。
これを解決するために、 URLパーサーという便利なツールを作成しました。ハッシュでエンコードされたパラメーターと同様に、URLのGETパラメーターを解析できます。デモを試してください!
乾杯!
IEのこの問題について:この「ハッシュ」ベースのソリューションがIE(貧弱なLinux開発者)では動作しないことに気づきませんでした。
ただし、IEの場合、非表示のiframeを使用して、その「URLが履歴に影響する」を使用できます。履歴を実装するプロパティ。私はこの声明には詳細が欠けていることを知っていますが、それは私自身のIEの経験不足に起因しています。
この解決策を試し、フォローアップします:)
iframe /ロケーションハッシュを使用して履歴の適切な実装を行うリンクのホストをインターネット上で見つけました。さまざまなブラウザーのiframeインターフェースの違いを掘り下げる忍耐がありませんでした。
jqueryプラグインを好むと思います。 YUIには履歴マネージャーもあります。
乾杯!