#javascript #html #hash #scroll #position
#javascript #HTML #хэш #прокрутка #позиция
Вопрос:
Это сводит меня с ума! У меня есть страница содержимого в середине, которая будет прокручиваться в отличие от слайд-шоу, каждый значок представляет новый раздел содержимого, который будет обновляться в пространстве просмотра.
Моя проблема заключается в том, что каждый раз, когда нажимается на хеш-ссылку, содержимое обновляется, но я попадаю в начало страницы, где содержимое теперь не отображается.
Я попробовал то, что, как я предполагал, поможет:
return false
preventDefault
Dummy hashes ( #_XYZ)
#null
onClick="return false"
href="javascript;void(0);"
Ничего не помогло. Я предполагаю, что мне нужно захватить и установить положение страницы, но, будучи новичком в JS, я не уверен, как правильно его применять.
Вот часть кода, который я использую:
$('#case1Step1').click(function(e)
{
e.preventDefault();
$('#webMain').fadeOut('normal',function(e)
{
$('#step1Case1').fadeIn();
});
_gaq.push(['_trackEvent', 'WebThumbs', 'big']);
return false;
}
);
Опять же, этот ответ работает, но я смотрю позицию страницы и оказываюсь в верхней части страницы.
Комментарии:
1. Вызов e.preventDefault() должен препятствовать переходу браузера к хэш-ссылке. Появляется ли хэш-ссылка в адресной строке после нажатия на ссылку?
2. Нет, он не отображается в адресной строке, поэтому он работает так, как должен в этом поместье, но браузер по-прежнему реагирует на него и прокручивается в начало страницы.
3. Вы можете попробовать вызвать его в начале обработчика кликов или закомментировать весь остальной код в обработчике кликов, за исключением вызова e.preventDefault() .
4. Просто ошибка вставки — я отредактировал код в сообщении, чтобы он точно соответствовал тому, что я использую. Хэш НЕ отображается в URL, но позиция прокрутки все равно возвращается наверх. казалось бы, это
e.preventDefault();
наверняка удаляет хэш, но не предотвращает ответ браузера.5. Вы всегда можете заменить свой хэш нулевым протоколом JavaScript: href=»javascript://»