ajax-json(およびjsがオフの場合はphpのmod_rewrite)で動作する優れたpushstate jqueryプラグインを探しており、jQueryアドレスが見つかりました。十分に文書化されており、操作が簡単なので、とても気に入っています。(history.jsを実際に理解したことはありません)しかし、すばらしいInternet Explorer(9)がhrefフィールドにハッシュを配置していることに気づきました。例でも同様に実行しています。http : //www.asual.com/jquery/address/samples/state/contact他のブラウザーをテストしましたが、これは優れたInternetExplorerでのみ確認できます。これを回避する方法はありますか?
1 に答える
Internet Explorer 9はHistory APIをサポートしていません。代わりに、これらの API を使用するアプリケーションは、onhashchange
機能にフォールバックする必要があります。これは、場所のフラグメントを利用して、機能の低いブラウザーで同様の機能を複製します。
あなたが見ているものは期待されています。Internet Explorer 10 以降はこの新しい機能をサポートしている/#
ため、URL に追加して状態履歴を記録および保存する必要はありません。Internet Explorer 9 は History API をサポートしていないため、プロビジョニングを行う必要があります。
history.pushState
HTML5 以外のブラウザーなどのメソッドのサポートを拡張する history.js について言及しました。このプロジェクトのGitHub ページでは、URL が新しいブラウザーでどのように表示されるか、古いブラウザーでどのように表示されるかの例をいくつか見ることができます。案の定、あなたが今経験しているパターンもそこで生まれます。
Internet Explorer 9 で表示すると URL にフラグメントがありますが、これはサーバー上の要求されたパスを反映していないことに注意してください。ブラウザに入力された要求されたアドレスと、[ネットワーク] タブのサーバーへの実際の要求に注意してください。
404 の解決
IE9 で 404 が発生した理由は、HTML5 History API をサポートしていないブラウザーでは、jQuery.address がセットアップで指定した状態に再度移動するためです。そのため、URL を入力したときにサーバーに渡される最初のリクエストがあります。このアドレスは mod_rewrite によって処理され、RewriteRules
ロードする初期コンテンツを決定します。
初期コンテンツがロードされ、jQuery.address がセットアップされると、セットアップ パスへの新しいナビゲーションが行われます。あなたの場合、これは/posters
. RewriteRules
残念ながら、にコンテンツを提供する場所がなかった/posters
ため、最終結果は 404 でした。IE9 は履歴インターフェイスをサポートしていないため、これは IE9 でのみ発生しました。
これは、F12 開発者ツールの [ネットワーク] タブに再度アクセスしてデータをキャプチャすることで確認できます。そのタブを開いた状態で、[キャプチャを開始] を押し、カートにある商品へのフル パスを入力します。そのフル パスへの最初のリクエストに続いて、いくつかの依存関係が読み込まれます。その後すぐに、 で指定したパスへの別のナビゲーション イベントが発生し$.address.state
ます。