проблема с URL-адресом хеш-кода firefox - PullRequest
5 голосов
/ 24 марта 2011

У меня есть форма на странице, над которой я работаю, и (поскольку это довольно далеко вниз), если есть ошибка, я добавляю URL с

show?comments=2#track_1

где комментарии = 2 бита - это обратная связь о том, какое поле пошло не так, а track_1 - это идентификатор div, в котором находится моя форма. Это прекрасно работает в IE (по крайней мере, 8), но в Firefox, страница просто находится сверху, не спрыгивая в соответствующий раздел.

Как ни странно, когда я выбираю URL и нажимаю ввод в адресной строке (то есть, когда я иду по адресу вручную, вместо того, чтобы генерировать его по результатам проверки формы), он работает в firefox!

У кого-нибудь есть идеи о том, что может происходить?

EDIT

n.b. это происходит только при отключенном javascript (хотя это как раз когда мне нужно, чтобы он работал!)

Ответы [ 6 ]

7 голосов
/ 26 июня 2011

Ваша проблема звучит как известная ошибка. Подтвердите это здесь .

1 голос
/ 11 февраля 2013

Если у вас есть автофокус на странице, это может быть причиной проблемы. Попробуйте убрать автофокус и проверить.

Если это является причиной, сообщите об ошибке в Mozilla по этой ссылке .

0 голосов
/ 10 августа 2016

Для меня эта проблема была решена путем удаления не буквенно-цифровых символов (, включая пробелы ), таких как двойная точка (также URL-кодированная% 3A) с использованием только -_.в качестве разделителей.

на самом деле не относится к вашей проблеме, но может быть для других:

замените все пробелы тире, подчеркиванием или точкой, затем удалите все не алфавитно-цифровые символы, и это должно работать.

0 голосов
/ 26 апреля 2014

Если вы используете jQuery с smoothScroll, следующий скрипт, размещенный после всех остальных javascript, будет работать. Вы можете проверить это, работая в Firefox на http://cafedethaireno.net/index.php#togo_menu

$(document).ready(function(){
var h = window.location.hash;
if (h) {
    var headerH = $('#navigationMenu').outerHeight();
    $('html, body').stop().animate({
        scrollTop : $(h).offset().top - headerH + "px"
    }, 1200, 'easeInOutExpo');

        event.preventDefault();
}
});

Надеюсь, это поможет, я использую фиксированную навигацию заголовка, чтобы сместить верхнюю позицию, но код можно легко манипулировать, чтобы удовлетворить.

0 голосов
/ 20 февраля 2014

Добавьте это в javascript, чтобы исправить представление, измените YOUR_ANCHOR на имя якоря с проблемами.

$(document).ready(function (){
 var anchor_id = window.location.hash; if (anchor_id != "#YOUR_ANCHOR") {
             var new_position = $(anchor_id).offset(); 
             window.scrollTo(new_position.left,new_position.top); 
} 
};

Это должно сбросить проблему Firefox.

0 голосов
/ 24 марта 2011

Используйте правильный путь знака #, это не по ID! Вы должны назвать позицию с помощью якоря следующим образом:

<a name="track_1"></a>
...