Какая разница между F5 и Ctrl-F5 в Firefox связана с событиями JavaScript?

При попытке этой общедоступной страницы: http://slim.nl/shop/default.aspx (обновление: тем временем этот сайт изменился, так что этот вопрос не может быть протестирован больше там), вы заметите меню. Если вы нажмете F5, меню на этой панели исчезнет. То же самое, когда вы приходите на эту страницу через кнопку "Назад" в своем браузере. Это происходит только в Firefox (см. Версии 3-7). Используя Ctrl - F5, панель меню снова появляется.

Насколько мне известно, все события JavaScript, которые срабатывают при загрузке страницы, включая любые циклы AJAX, также должны срабатывать при обновлении страницы с помощью F5 или при ее поступлении через кнопку "Назад". Что здесь происходит?

Хотелось бы узнать с точки зрения программиста, какая разница между F5 и Ctrl - F5, желательно более общая, чем только в этом случае. Если это не ошибка в Firefox, конечно.

enter image description here

Ответ 1

Firefox кэширует не только загруженные файлы, но и изменения, внесенные на страницу (ввод пользователя и даже изменение атрибутов, сделанных JavaScript). Проверьте это. Поэтому, если ваше меню зависит от некоторых атрибутов, вы можете просто hard-refresh, нажав CTRL + F5.

Ответ 2

Ctrl + F5 очищает кешированные файлы в браузерах, где F5 только обновляет страницу, но использует кешированные файлы. Например, скажите, что вы загружаете страницу, вносите изменения в файл css и загружаете ее, нажимая на обновление или F5. Страница просто обновляет и не получает новый исправленный файл css с файлом Ctrl + F5, он очищает кеш для страницы и снова извлекает файл с сервера. Затем будет загружен новый файл css, который будет отображать изменения.

Ответ 3

ctrl + F5 просто заставляет игнорировать кеш. Возможно, у вас тонкая асинхронная ошибка программирования, которая является только поверхностной, когда у вас есть более быстрая загрузка страницы (из-за использования кеша).

Ответ 4

Эта проблема была исправлена путем отката файла \js\dnn.controls.dnnmenu.js к предыдущей версии. Не уверен, что там было не так (не успел отладить), но все равно теперь работает :)