Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.07.2019, 10:00
Новичок на форуме
Отправить личное сообщение для redBaron Посмотреть профиль Найти все сообщения от redBaron
 
Регистрация: 03.12.2018
Сообщений: 4

якорь без изменения урла
можно ли перейти по юкорю на другой странице без изменения урла?

например у меня есть страница first.html со ссылкой
<div id="mylink"></div>

нужно перейти на страницу second.html к якорю #myanchor

js
document.getElementById('mylink').onclick = function(){
window.location.replace("http://second.html#myanchor");
}

как убрать #myanchor из загрузившейся страницы или вообще чтобы он не добавлялся?
Ответить с цитированием
  #2 (permalink)  
Старый 31.07.2019, 11:18
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

вариант
window.addEventListener("popstate", function () {
       history.pushState('', '', location.pathname)
    });
Ответить с цитированием
  #3 (permalink)  
Старый 31.07.2019, 14:25
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от redBaron
например у меня есть страница first.html со ссылкой
<div id="mylink"></div>

нужно перейти на страницу second.html к якорю #myanchor

js
document.getElementById('mylink').onclick = function(){
window.location.replace("http://second.html#myanchor");
}
Это не ссылка, ссылка делается намного проще!

страница first.html
<a href="second.html#myanchor">Go!</a>


Сообщение от redBaron
как убрать #myanchor из загрузившейся страницы
на странице second.html добавьте...
<script>

if(location.hash !== "") {
	sessionStorage.hash = location.hash;
	location.replace(location.pathname);
} else {
	if("hash" in sessionStorage) {
		document.querySelector(sessionStorage.hash).scrollIntoView();
		delete sessionStorage.hash;
	}
}

</script>


Сообщение от Poznakomlus
вариант
window.addEventListener("popstate", function () {
       history.pushState('', '', location.pathname)
    });
Событие popstate не происходит при загрузке страницы! Оно происходит при смене активного состояния в истории. А зачем вам в состоянии пустая строка? Кстати, url можно не указывать!

Последний раз редактировалось Malleys, 31.07.2019 в 14:30.
Ответить с цитированием
  #4 (permalink)  
Старый 31.07.2019, 14:49
Новичок на форуме
Отправить личное сообщение для redBaron Посмотреть профиль Найти все сообщения от redBaron
 
Регистрация: 03.12.2018
Сообщений: 4

Сообщение от Malleys Посмотреть сообщение
if(location.hash !== "") {
sessionStorage.hash = location.hash;
location.replace(location.pathname);
} else {
if("hash" in sessionStorage) {
document.querySelector(sessionStorage.hash).scroll IntoView();
delete sessionStorage.hash;
}
}
ошибка
Cannot read property 'scrollIntoView' of null
Ответить с цитированием
  #5 (permalink)  
Старый 31.07.2019, 15:37
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от Malleys
Событие popstate не происходит при загрузке страницы! Оно происходит при смене активного состояния в истории. А зачем вам в состоянии пустая строка? Кстати, url можно не указывать!
Абсолютно правильно, здесь не поможет и hashchange для этого достаточно одной строки для замены старой истории
location.hash && history.replaceState({}, '', location.pathname);
Ответить с цитированием
  #6 (permalink)  
Старый 31.07.2019, 16:24
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

redBaron, а какой у вас браузер? В Chrome и FireFox работает...
Ответить с цитированием
  #7 (permalink)  
Старый 31.07.2019, 16:33
Новичок на форуме
Отправить личное сообщение для redBaron Посмотреть профиль Найти все сообщения от redBaron
 
Регистрация: 03.12.2018
Сообщений: 4

странно, у меня тоже хром
Ответить с цитированием
  #8 (permalink)  
Старый 31.07.2019, 16:59
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от redBaron
странно, у меня тоже хром
На всякий случай, мой пример... https://charm-launch.glitch.me/first.html

При нажатий на ссылку second.html#myanchor, откроется второй html-файл, и слово hello должно быть у верхнего края страницы!
Ответить с цитированием
  #9 (permalink)  
Старый 31.07.2019, 17:12
Новичок на форуме
Отправить личное сообщение для redBaron Посмотреть профиль Найти все сообщения от redBaron
 
Регистрация: 03.12.2018
Сообщений: 4

Спасибо, за помощь. Попробую разобраться
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отреагировать на изменения в БД, без участия пользователя smart-create AJAX и COMET 2 08.01.2018 15:36
Как сохранить изменения скрипта kosty@ jQuery 5 09.01.2014 19:56
Отлов изменения размера элемента. Какие способы есть? danik.js Events/DOM/Window 3 05.02.2013 11:00
Можно ли изменить адресную строку без перезагрузки страницы (не якорь) Papa Общие вопросы Javascript 2 08.05.2010 03:45
Открытие нового окна без скролбаров без верхнего бара "файл правка вид и тп" Mara Общие вопросы Javascript 2 18.02.2010 15:11