2012-07-28 33 views
5

私はAJAXを介してページをリロードせずに利用規約を表示する可能性のあるウェブページを持っています。しかし、それ自体は問題ではありませんが、私はまた、歴史の状態をプッシュしようとしています。IE履歴プッシュ状態

IE以外のほとんどのブラウザでうまく動作します。いくつかの不可解な理由のために、コンテンツはAJAX経由で読み込まれますが、新しいページが前のページで開かれます。これをどうすれば解決できますか?

このWebページ(http://galaxy-battle.de)の例を見るには、「Join」ボックスの「T & Cs」をクリックしてみてください。

+0

これを行うコードをjsfiddleに表示すると、エラーを発見してデバッグするのが簡単になりますか? –

+0

ああ、申し訳ありません、ただそれを読んでください。少しでも1つを作るつもりです。 – arik

+0

申し訳ありませんが、私はjsfiddleで動作するpushStateコマンドを取得できませんでした、彼らはそれをブロックしているようです。 – arik

答えて

10

IE9以下doesn't support pushState。次の行を呼び出すときに例外があります。

window.history.pushState(null、null、pathFullPage);

SCRIPT438:オブジェクトはプロパティまたはメソッド「pushState」 をサポートしていませんterms_and_conditions、行62文字21

おそらくEmulate/polyfill history.pushstate() in IE

2

古いが、それでも現在の質問で述べたいくつかの回避策に見て面白いかもしれ? 。私はちょうど私が IEでpushStateをエミュレートしようとすることをお勧めしたいと言いたいです。 history.pushStateが(ブラウザがpushStateをサポートしています)nullでない場合、あなたはそれを使用

  1. history.pushStateあれば気の利いたJavaScriptの

  2. であなたのコンテンツをロードします。

    その代わりに、あなたは、特徴検出を使用することができます(ブラウザはpushStateをサポートしていません)、あなたはURLを変更する/リンクをたどってページ全体を変更します

もちろん、これはIE < = 9ユーザーが他のユーザーが持っているクールなアニメーションをすべて持たないことを意味します。しかし、質問したいのは、#を含むあなたのウェブサイトへのネットリンクを見たいですか?

ユーザーはあなたのアプリが便利だと思って、ウェブ上にリンクを貼り付けることができます。それはあなたにいくつかのGoogleのジュースをもたらすので、クールだ。今、そのユーザーがIEを使い、history.jsを使うと、ユーザーはハッシュを含むリンクを貼り付けます。

これは、あなたのアプリの公開ページの適切なインデックス作成を無効にし、また醜いように見えます。私の個人的な意見は、IEユーザーのためのjsアニメーションまたはライトボックスを持つことは、それらのトレードオフの価値がないということです。

+1

残念ながら、ビジネス要件は常に開発者の直接の管理下にあるわけではありません。 – jaydel

関連する問題