04.07.2016, 23:18
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
показываю, что событие не на click стоит вешать, а на изменение хеша
|
|
04.07.2016, 23:24
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Poznakomlus,
ок если нужна только ссылка, если важно вернутся назад в нужное место, тогда код не рабочий или я чего-то не понимаю.
|
|
04.07.2016, 23:33
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от рони
|
если важно вернутся назад в нужное место
|
этo я уже с ваших примеров копипастил изменение истории
есть специальное событие по работе с хешами
если мы работаем с хешами то логичнее его использовать
я же показал как определяется хеш и как при изменении истории он затирается
|
|
04.07.2016, 23:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Poznakomlus,
тогда может history.pushState заменить на history.replaceState в вашем коде?
|
|
05.07.2016, 00:04
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от рони
|
в вашем коде
|
Сообщение от Poznakomlus
|
я уже с ваших примеров копипастил
|
код не мой копипаст
я только про обработчик событий говорю как навешивать, внутренняя реализация это уже к разработчику, что ему надо и как вести историю
ведь здесь же нет проверки поддерживает ли броузер историю вообще, если докапываться
|
|
05.07.2016, 12:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от avalan4e
|
Но нет, действительно, так не работает.
|
Хеш, это навигация внутри страницы, то есть только на клиенте и браузер на сервер его не передает.
|
|
05.07.2016, 12:28
|
Интересующийся
|
|
Регистрация: 04.07.2016
Сообщений: 20
|
|
Poznakomlus,
рони,
Благодарю от всей души. Всё работает как часики.
Вот так теперь выглядит мой код для обработки события перехода по хешу:
<script type="text/javascript">
window.onhashchange = function () {
console.log(location.hash);
history.replaceState('', '', '/url');
};
</script>
А как теперь сделать то же самое при переходе по якорю с другой страницы? window.onload делает это до перехода по хешу. В результате правильная строка при бесполезном переходе.
|
|
05.07.2016, 12:35
|
Интересующийся
|
|
Регистрация: 04.07.2016
Сообщений: 20
|
|
Сообщение от laimas
|
Хеш, это навигация внутри страницы, то есть только на клиенте и браузер на сервер его не передает.
|
Да, я уже разобрался, благодарю.
|
|
06.07.2016, 13:05
|
Интересующийся
|
|
Регистрация: 04.07.2016
Сообщений: 20
|
|
Уважаемые форумчане, проблема не решается обращением к моим знаниям js и спекулятивному шаманству с бубном в этой области. Повторяю свой вопрос: как убрать хеш из адресной строки при переходе с другой страницы по ссылке типа:
<a href="url#hash">
Проблема в том, что событие hashchange не происходит, а навешивание изменения ссылки при загрузке окна приводит к тому, что переход осуществляется уже по этой изменённой ссылке. Надеюсь на вашу отзывчивость, т. к. безрезультатно часами застреваю над этой задачей.
|
|
06.07.2016, 15:02
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
avalan4e,
убрал ... может так попробовать пока знатоки не откликнулись.
<script type="text/javascript">
window.onload = function () {
location.hash && window.setTimeout(function() {
history.replaceState('', '', '/url');
},300)
};
</script>
|
|
|
|