Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Убрать хеш из адресной строки (https://javascript.ru/forum/events/63853-ubrat-khesh-iz-adresnojj-stroki.html)

Vlasenko Fedor 04.07.2016 23:18

показываю, что событие не на click стоит вешать, а на изменение хеша

рони 04.07.2016 23:24

Poznakomlus,
:-? ок если нужна только ссылка, если важно вернутся назад в нужное место, тогда код не рабочий или я чего-то не понимаю.

Vlasenko Fedor 04.07.2016 23:33

Цитата:

Сообщение от рони
если важно вернутся назад в нужное место

этo я уже с ваших примеров копипастил изменение истории
есть специальное событие по работе с хешами
если мы работаем с хешами то логичнее его использовать
я же показал как определяется хеш и как при изменении истории он затирается

рони 04.07.2016 23:48

Poznakomlus,
тогда может history.pushState заменить на history.replaceState в вашем коде?

Vlasenko Fedor 05.07.2016 00:04

Цитата:

Сообщение от рони
в вашем коде

Цитата:

Сообщение от Poznakomlus
я уже с ваших примеров копипастил

код не мой копипаст
я только про обработчик событий говорю как навешивать, внутренняя реализация это уже к разработчику, что ему надо и как вести историю
ведь здесь же нет проверки поддерживает ли броузер историю вообще, если докапываться

laimas 05.07.2016 12:03

Цитата:

Сообщение от avalan4e
Но нет, действительно, так не работает.

Хеш, это навигация внутри страницы, то есть только на клиенте и браузер на сервер его не передает.

avalan4e 05.07.2016 12:28

Poznakomlus,
рони,
Благодарю от всей души. Всё работает как часики.
Вот так теперь выглядит мой код для обработки события перехода по хешу:
<script type="text/javascript">
  window.onhashchange = function () {
    console.log(location.hash);
    history.replaceState('', '',  '/url');
  };
</script>

А как теперь сделать то же самое при переходе по якорю с другой страницы? window.onload делает это до перехода по хешу. В результате правильная строка при бесполезном переходе.

avalan4e 05.07.2016 12:35

Цитата:

Сообщение от laimas
Хеш, это навигация внутри страницы, то есть только на клиенте и браузер на сервер его не передает.

Да, я уже разобрался, благодарю.

avalan4e 06.07.2016 13:05

Уважаемые форумчане, проблема не решается обращением к моим знаниям js и спекулятивному шаманству с бубном в этой области. Повторяю свой вопрос: как убрать хеш из адресной строки при переходе с другой страницы по ссылке типа:
<a href="url#hash">
Проблема в том, что событие hashchange не происходит, а навешивание изменения ссылки при загрузке окна приводит к тому, что переход осуществляется уже по этой изменённой ссылке. Надеюсь на вашу отзывчивость, т. к. безрезультатно часами застреваю над этой задачей.

рони 06.07.2016 15:02

avalan4e,
убрал ... может так попробовать пока знатоки не откликнулись.
<script type="text/javascript">
  window.onload = function () {
    location.hash && window.setTimeout(function() {
  history.replaceState('', '',  '/url');
},300)
  };
</script>


Часовой пояс GMT +3, время: 11:50.