Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.09.2018, 15:41
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Сообщение от рони Посмотреть сообщение
SuperZen,
а если так?
<script>
    var hash = location.hash;
    hash && document.querySelector(hash).classList.add('w-current')
</script>
а в чем разница с прошлым примером? вроде все тоже самое: табы переключаются, якорь в адресной строке продолжает отображаться...
Ответить с цитированием
  #12 (permalink)  
Старый 28.09.2018, 15:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Igorsrt,
скрипт вниз страницы
Ответить с цитированием
  #13 (permalink)  
Старый 28.09.2018, 15:42
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

перед if(hash) посмотри что в hash? если там нет первым символом #, тогда замени на document.querySelector('#' + hash)....
Ответить с цитированием
  #14 (permalink)  
Старый 28.09.2018, 15:44
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

не тот сниппет скопировал походу, тут три строки
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
    })
Ответить с цитированием
  #15 (permalink)  
Старый 28.09.2018, 15:47
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Сообщение от рони Посмотреть сообщение
Igorsrt,
скрипт вниз страницы
так он внизу, на той странице где табы... правда jQuery ассинхронно подгружается - это может влиять?
Ответить с цитированием
  #16 (permalink)  
Старый 28.09.2018, 16:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Igorsrt,
пост №14 SuperZen, проверьте, и что консоль то писала?
Ответить с цитированием
  #17 (permalink)  
Старый 28.09.2018, 16:00
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 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
    })
вот так заработало, спасибо еще раз... якорь на секунду отображается в адресной строке, потом пропадает...
Интересно, а в чем заключался вариант Рони - у него всегда классные решения (жалко что у меня сейчас не сработало)
Ответить с цитированием
  #18 (permalink)  
Старый 28.09.2018, 16:08
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

отличается тем, что var hash = location.hash возвращает hash без символа #, и потом запускается поиск элемента, но поскольку не указали что ищем элемент по id (в querySelector, как и jQ - надо явно указывать, что id это #, class это .), то поиск не находил элемент с id, например, tab1
Ответить с цитированием
  #19 (permalink)  
Старый 28.09.2018, 16:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от 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')
         })
Ответить с цитированием
  #20 (permalink)  
Старый 28.09.2018, 16:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от SuperZen
отличается тем, что var hash = location.hash возвращает hash без символа #,
почему без #?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить барадатер открывать картинки-ссылки с js отправкой POST в новой вкладке Nikifor Элементы интерфейса 14 14.12.2017 07:27