Firefox 3.6/Mac で奇妙な動作に遭遇しました。ただし、これは一般的な Firefox の動作であると思われます。
window.location.href
プロパティを変更して新しい URL に移動する2 つの非常に単純なテスト ページを作成しました。
- http://troy.onespot.com/static/stack_overflow/redirect.html
- http://troy.onespot.com/static/stack_overflow/redirect_timeout.html
いずれかのファイルで次のことを試した場合:
- 新しい/空白のブラウザー タブを開きます。
- URLを貼り付けて「Enter」を押します。
この 2 つの違いに気付くでしょう。最初のリンクを使用すると、ブラウザの [戻る] ボタンが無効になります。2番目を使用すると、有効になり、期待どおりに機能します。
2 つのスクリプトの唯一の違いは、後者が変更前に 1 秒のタイムアウトを設定することwindow.location.href
です。
なぜこれが起こるのかわかりません.2番目のスクリプトの動作(「戻る」ボタンが期待どおりに機能し続ける)を、ユーザーに遅延を引き起こすことなく実現しようとしています.
私の最善の推測では、開発者が後者を使用するつもりだったときに前者を使用するのが一般的だと思うので、おそらくFirefoxはメソッドwindow.location.href
を使用するのと同じ設定で即時の「リダイレクト」を扱います。window.location.replace()
を使用setTimeout
すると、コードが非同期で実行されるため、この動作が無効になる可能性があります。そうなのだろうか?
setTimeout
目的の効果を得るためにの最小値を試したことはありませんが、ここで行います。しかし、なぜこれが正確に起こるのかを理解したいと思います。
ありがとう!