Перехватить именованный якорь в JavaScript - PullRequest
4 голосов
/ 04 мая 2011

Представьте себе, кто-то печатает http://example.com/somepage#someanchor в адресной строке своего браузера.Как я мог перехватить этот вызов для якоря, нормально отобразить страницу (не прокручивать до якоря) и сделать что-то вместо этого в javascript, например, с предупреждением «someanchor».Все в js, нет серверных перенаправлений (на что-то вроде somepage? Anchor = someanchor).

Есть идеи?Это вообще возможно?Было бы легко перехватывать щелчки якоря, я контролирую, но здесь дело не в этом.

Ответы [ 3 ]

4 голосов
/ 04 мая 2011

Легко перехватить (вызовите это из вашего обработчика onload):

function getHash() {
  var hash = window.location.hash;
  return hash.substring(1); // remove #
}

Чтобы предотвратить прокрутку окна до указанной привязки, вам, возможно, придется прокрутить вверх на onloadсобытие.

2 голосов
/ 21 июля 2015

Вы можете сделать это, используя:

$(window).on('hashchange', function() {
  //prevent default, then your code
});

Как описано в этом SO ответе

0 голосов
/ 04 мая 2011

Ознакомьтесь с плагином hashchange Бена Алмана http://benalman.com/projects/jquery-hashchange-plugin/, который решает кросс-браузерные проблемы

...