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