Обновление бесконечной страницы 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 также сделает эту работу!

Другие вопросы по тегам