#javascript #html #css #browser
#javascript #HTML #css #браузер
Вопрос:
У меня есть кнопка, которая «переходит» на новую страницу.
Для этого кнопка делает настройки отображения текущего раздела / страницы = нет, а отображение нового раздела / страницы = блок.
<div class="listLeft"><p class="listItems" onclick="navButtons('work')">work</p><p class="listItems" onclick="navButtons('about')">about</p></div>
<div class="listRight"><p class="listItems" onclick="navButtons('playground')">playground</p><p class="listItems" onclick="navButtons('contact')">contact</p></div>
js ниже
function navButtons(page) {
let section = document.getElementById(page);
section.setAttribute("class", "visible");
window.location.href = `#${page}page`;
window.scrollTo(0, document.body.scrollHeight);
let pagesArrayCopy = [...pagesArray]
const unselected = pagesArrayCopy.filter(item => item.id !== page);
setTimeout(() => {
unselected.forEach((el, index) => unselected[index].setAttribute("class", "invisible"));
pagesArray = Array.from(pagesNodeList);
}, 500);
};
когда я нажимаю кнопку возврата, URL-адрес, очевидно, возвращается к старому разделу #, но css не сбрасывается, поэтому новая страница все еще видна, а предыдущая страница по-прежнему отображается = нет.
Как мне обойти это, чтобы при нажатии кнопки «Назад» значения css сбрасывались по умолчанию?
Комментарии:
1. добавьте свой код, чтобы мы могли видеть, что вы делаете
2. @DCR добавили код
3. вам нужно добавить остальную часть вашего кода
Ответ №1:
Попробуйте использовать тег привязки, чтобы ваш URL-адрес действительно изменился (т. Е.: обновите адрес до mypage.html#page2). Затем вы можете привязать функцию к onhashchange и проверить, хорошо ли отображается ваша страница.
Ответ №2:
вы предоставили не весь html. идентификатор не работает, поэтому section равен null
function navButtons(page) {
let section = document.getElementById(page);
console.log(section)
section.setAttribute("class", "visible");
window.location.href = `#${page}page`;
window.scrollTo(0, document.body.scrollHeight);
let pagesArrayCopy = [...pagesArray]
const unselected = pagesArrayCopy.filter(item => item.id !== page);
setTimeout(() => {
unselected.forEach((el, index) => unselected[index].setAttribute("class", "invisible"));
pagesArray = Array.from(pagesNodeList);
}, 500);
};
<div class="listLeft">
<p class="listItems" onclick="navButtons('work')">work</p>
<p class="listItems" onclick="navButtons('about')">about</p></div>
<div class="listRight">
<p class="listItems" onclick="navButtons('playground')">playground</p>
<p class="listItems" onclick="navButtons('contact')">contact</p></div>
Ответ №3:
Другой способ сделать это — привязать ваше изменяющееся состояние к истории браузера. Поскольку нет реального способа переопределить кнопку «назад» в браузере, вам придется записать ее в свою историю. Смотрите API истории для HTML5 здесь: https://css-tricks.com/using-the-html5-history-api /
То же самое, что указано выше, также можно сделать с помощью этого плагина: https://code.google.com/archive/p/reallysimplehistory /