28.09.2018, 15:41
|
Профессор
|
|
Регистрация: 21.02.2016
Сообщений: 271
|
|
Сообщение от рони
|
SuperZen,
а если так?
<script>
var hash = location.hash;
hash && document.querySelector(hash).classList.add('w-current')
</script>
|
а в чем разница с прошлым примером? вроде все тоже самое: табы переключаются, якорь в адресной строке продолжает отображаться...
|
|
28.09.2018, 15:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Igorsrt,
скрипт вниз страницы
|
|
28.09.2018, 15:42
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
перед if(hash) посмотри что в hash? если там нет первым символом #, тогда замени на document.querySelector('#' + hash)....
|
|
28.09.2018, 15:44
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
не тот сниппет скопировал походу, тут три строки
history.replaceState... еще добавилось
document.addEventListener('DOMContentLoaded', function () {
var hash = location.hash.substr(1);
hash && document.getElementById(hash).classList.add('w-current')
history.replaceState(null, null, window.location.href.replace(/#.*$/, ''));//replace state
})
|
|
28.09.2018, 15:47
|
Профессор
|
|
Регистрация: 21.02.2016
Сообщений: 271
|
|
Сообщение от рони
|
Igorsrt,
скрипт вниз страницы
|
так он внизу, на той странице где табы... правда jQuery ассинхронно подгружается - это может влиять?
|
|
28.09.2018, 16:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Igorsrt,
пост №14 SuperZen, проверьте, и что консоль то писала?
|
|
28.09.2018, 16:00
|
Профессор
|
|
Регистрация: 21.02.2016
Сообщений: 271
|
|
Сообщение от SuperZen
|
не тот сниппет скопировал походу, тут три строки
history.replaceState... еще добавилось
document.addEventListener('DOMContentLoaded', function () {
var hash = location.hash.substr(1);
hash && document.getElementById(hash).classList.add('w-current')
history.replaceState(null, null, window.location.href.replace(/#.*$/, ''));//replace state
})
|
вот так заработало, спасибо еще раз... якорь на секунду отображается в адресной строке, потом пропадает...
Интересно, а в чем заключался вариант Рони - у него всегда классные решения (жалко что у меня сейчас не сработало)
|
|
28.09.2018, 16:08
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
отличается тем, что var hash = location.hash возвращает hash без символа #, и потом запускается поиск элемента, но поскольку не указали что ищем элемент по id (в querySelector, как и jQ - надо явно указывать, что id это #, class это .), то поиск не находил элемент с id, например, tab1
|
|
28.09.2018, 16:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Сообщение от Igorsrt
|
вот так заработало
|
тогда вот так и в самый верх
var hash = location.hash.substr(1);
history.replaceState(null, null, window.location.href.replace(/#.*$/, ''));
document.addEventListener('DOMContentLoaded', function () {
hash && document.getElementById(hash).classList.add('w-current')
})
|
|
28.09.2018, 16:13
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,127
|
|
Сообщение от SuperZen
|
отличается тем, что var hash = location.hash возвращает hash без символа #,
|
почему без #?
|
|
|
|