Обновление бесконечной страницы Firefox 6 со страницей с хэш-тегами
Когда Firefox недавно обновился до версии 6, сайт, над которым я работаю, сильно сломался.
Сайт работает нормально при просмотре любой страницы без хеш-тега, но если вы пытаетесь перейти на страницу с хеш-тегом (например, #test
) или обновить страницу после применения хеш-тега, страница обновляется настолько быстро, насколько это возможно, бесконечно.
Это сайт Asp.Net MVC 2, созданный около полутора лет назад.
2 ответа
Оказывается, это проблема старой версии MicrosoftAjax.js (той, которая устанавливается вместе с Asp.Net MVC 2).
Откройте файл MicrosoftAjax.debug.js и проверьте номер версии файла. Верхняя часть этого файла будет выглядеть так, если это ваша проблема:
// Name: MicrosoftAjax.debug.js
// Assembly: System.Web.Extensions
// Version: 4.0.0.0
// FileVersion: 4.0.20526.0
Это версия, которая содержит эту ошибку. Последняя версия файла на момент написания статьи - 4.0.30205.0. Обновитесь до последней версии, и проблема исчезнет. Как упомянуто в комментарии Nathan Fox, я получил последнюю версию от Microsoft cdn и, в частности, минимизированную и отладочную версии.
Для любопытных я отследил проблему в файле javascript.
Версия с ошибками включает в себя:
if ((Sys.Browser.agent === Sys.Browser.Firefox) && window.location.hash && (!window.frameElement || window.top.location.hash)) {
window.history.go(0);
}
Который был исправлен к следующему в более новой версии:
if ((Sys.Browser.agent === Sys.Browser.Firefox) && window.location.hash && (!window.frameElement || window.top.location.hash)) {
(Sys.Browser.version < 3.5) ?
window.history.go(0) :
location.hash = this.get_stateString();
}
Удаление MicrosoftAjax.js или MicrosoftAjax.debug.js может помочь, но простая замена файлов текущими версиями с http://www.asp.net/ajaxlibrary/CDNAjax4.ashx также сделает эту работу!