5

AJAX を介して、ユーザーがページをリロードせずに利用規約を表示できる Web ページがあります。それ自体は問題ありませんが、履歴状態をプッシュしようとしています。

これは、IE を除くほとんどのブラウザーで正常に機能します。何らかの不可解な理由で、コンテンツは AJAX 経由で読み込まれますが、前のページで新しいタブが開かれます。どうすればこれを修正できますか?

この Web ページ ( http://galaxy-battle.de ) で例を見ることができます。[参加] ボックスの [T&Cs] をクリックしてみてください。

4

2 に答える 2

10

IE9 以下は pushState をサポートしていません。次の行を呼び出すときに例外があります

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

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

Emulate/polyfill history.pushstate() in IEで説明されているいくつかの回避策を見ると、おそらく興味深いかもしれません。

于 2012-08-01T12:59:33.230 に答える
2

古いが、まだ現在の質問。IE で pushState をエミュレートしないことをお勧めします。

その代わりに、機能検出を使用できます。

  1. null でない場合history.pushState(ブラウザーが pushState をサポートしている場合)、それを使用して、気の利いた JavaScript でコンテンツをロードします。

  2. null の場合history.pushState(ブラウザーが pushState をサポートしていない)、URL を変更するか、リンクをたどってページ全体を変更します。

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

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

これにより、アプリの公開ページの適切なインデックス作成が無効になり、見栄えも悪くなります。私の個人的な意見では、IE ユーザー向けの js アニメーションまたはライトボックスを用意しても、それらをトレードオフする価値はありません。

于 2013-10-02T11:08:54.937 に答える