Предотвращение поведения хэша по умолчанию при загрузке страницы
У меня есть страница с интерфейсом с вкладками. Каждая вкладка имеет уникальный идентификатор. Я включил ссылки, указывающие на эту страницу с добавленным идентификатором после хэша, и теперь я пытаюсь обойти поведение браузера по умолчанию, которое открывает URL-адрес с хэшем в месте расположения элемента на странице.
Итак:
- pageA ссылки на страницуB:
<a
href="pageB.php#Tab4">Go</a>
- pageB открывается, и мой jQuery активирует правильную вкладку, но браузер прокручивается вниз до места, где
<div id="Tab4">
находится на странице.
Именно это я хочу предотвратить.
Любые идеи?
Спасибо!
Ответы
Ответ 1
Невозможно предотвратить поведение хэша по умолчанию, но вы можете изменить свою схему хэширования, так что #tag не соответствует ни одному идентификатору на вашей странице. На загрузке страницы возьмите значение хэша и добавьте константу (ex: _hash
), затем прокрутите ее до тех пор, пока не будет использоваться jQuery.
Пример:
http://mysite/page.php#tab4
page.php имеет <div id="tab4_hash"></div>
Загрузите страницу, получите div, выполнив tab4
+ _hash
Ответ 2
Я бы использовал это:
window.scrollTo(0,0);
Таким образом вам не нужно менять идентификатор элемента или что-то еще.
Я столкнулся с проблемой, когда мне захотелось прокручиваться до вкладки, но по какой-то причине она прокручивалась мимо нее до нижней части страницы (нет, не было дублированного идентификатора). Я думаю, что это потому, что браузер будет прокручивать идентификатор до того, как закончится загрузка контента, а дополнительный контент подтолкнет элемент выше новой позиции прокрутки). Я исправил это следующим образом:
if(document.location.hash)
{
window.location = document.location.hash;
}
инструкция "if" здесь обязательна или вы можете получить бесконечный цикл
Ответ 3
После того, как вы закончите загрузку правой вкладки, запустите это:
window.location = '#';
Ответ 4
- Вам следует просто скрыть элемент с id = хешем по умолчанию
- Затем, после загрузки страницы, вы делаете элемент видимым.
Вы можете найти более подробную информацию здесь: Как отключить привязку "jump" при загрузке страницы?