Я только что наткнулся на странное поведение в Firefox 3.6 / Mac. Я подозреваю, что это общее поведение Firefox.
Я создал две очень простые тестовые страницы, которые изменяют свойство window.location.href
для перехода к новому URL-адресу:
Если вы попробуете выполнить следующее с любым файлом:
Вы заметите одно различие между ними: при использовании первой ссылки кнопка «Назад» в браузере отключается; используя второй, он включен и работает так, как я ожидал.
Единственное различие между двумя сценариями состоит в том, что последний устанавливает тайм-аут в одну секунду перед изменением window.location.href
.
Я не знаю, почему это происходит, и я пытается добиться поведения второго сценария (где кнопка «Назад» продолжает работать, как ожидалось), не вызывая каких-либо задержек для пользователя.
Я предполагаю, что, возможно, Firefox обработает немедленное «перенаправление», установив window.location.href
то же самое, что и использование метода window.location.replace ()
, поскольку я думаю, что разработчики обычно используют первый, когда они собираются использовать второй. Возможно, использование setTimeout
, поскольку это приводит к асинхронному запуску кода, устраняет такое поведение. Неужели это так?
Я не знаю ' t экспериментировал с минимальным значением для setTimeout
для достижения желаемого эффекта, но я сделаю это сейчас. Однако я хотел бы выяснить, почему это происходит именно так.
Спасибо!