console.log(location.hash.replace(/#/g,''));
function init() {
var link = document.getElementsByTagName("a");
link.onclick = function() {
history.pushState('', document.title, window.location.pathname);
};
}
init();
var link = document.getElementsByTagName("a");
link.onclick = function (){
location = location.hash.replace(/#/g,'');
}
for(var i=0; i<link.length; i++){
location = location.hash.replace(/#/g,'');
history.pushState('', document.title, window.location.pathname);
}
<a href="#portfolio">Моё портфолио</a>
браузер нас перенесёт к этому блоку но и url в адресной строке станет таким : http://site.ru/#portfolio
а надо просто показать вот так : http://site.ru/portfolio
как будто это папка с index.html/php не важно ТО Я ВАШ ОТВЕТ БУДУ В ПРИМЕР СТАВИТЬ window.history.pushState({}, '', '/q/627749')
<ul>
<li>
<a hre="#about">Обо мне</a>
</li>
<li>
<a hre="#scills">Мой опыт</a>
</li>
<li>
<a hre="#portfolio">Мои работы</a>
</li>
</ul>
<div id="about"></div>
<div id="scills"></div>
<div id="portfolio"></div>
<html>
<head>
<style>
html,body{
scroll-behavior: smooth
}
.item{
height:100vh;
}
nav{
position: fixed;
width:100%;
}
#portfolio{
background: #cc0;
}
#scills{
background: #0c0;
}
#about{
background: #c00;
}</style>
</head>
<body>
<nav>
<a href="#portfolio">Портфолио</a>
<a href="#scills">Опыт</a>
<a href="#about">Обо мне</a>
</nav>
<div id="portfolio" class="item"></div>
<div id="scills" class="item"></div>
<div id="about" class="item"></div>
<script>
const aClick = (e) => {
e.preventDefault();
const target = e.target.href.split('#')[1];
console.log(target);
const offsetTop = document.getElementById(target).offsetTop;
window.scrollTo(0, offsetTop);
window.history.pushState({}, document.title, '/'+target);
};
[...document.getElementsByTagName('a')].forEach(i=>{
i.addEventListener('click', aClick);
});
</script>
</body>
</html>
function locationHashChanged() {
if (location.hash) {
var hash = location.hash.replace(/#/, '');
history.replaceState({}, '', hash)
}
}
window.onhashchange = locationHashChanged;
a.addEventListener('click', function () {
setTimeout(() => history.replaceState({}, '', locationWithoutHash))
})
http://site.ru/#portfolio
покажет http://site.ru/portfolio#portfolio
но с этим можно жить (и даже нужно чтобы анкоры продолжали работать), зато страница проскроллится куда вам надо и в адресной строке будет http://site.ru/portfolio