別ページのページ内リンクに遷移した際に、URLにアンカーリンクを残さない方法
解決したいこと
ページ内リンクのアンカー(#)をURLにアンカーリンクが残らないようにしたいのですが、ページ遷移がなければ、何とか出来たのですが、別ページから遷移するページ内リンクの場合の方法がわかりません…。
ソースは以下になります。
document.addEventListener('touchstart', function() {}, {passive: true});
$(function(){
$('a[href^=#]').click(function(){
var href= $(this).attr("href");
if(href.indexOf("#") >= 0 && href != '' && href != "#"){
var target = $(href);
try{
position = target.offset().top;
}catch(e){
}
}
var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
var speed = Math.ceil(Math.pow(Math.abs((position - scrollY)), 0.7));
if(speed){
$('body, html').animate({scrollTop:position}, speed, 'swing');
}
return false;
});
});
URLが残ってしまうリンクは以下ですが、
<a href="index.php#access">アクセス</a>
クリックしても、プログラムの0「var href= 」に「index.php#access」が入ってなさそうです。ページ内リンクだと「#news」等、アンカーリンクから後が反映するのですが、、、
urlHashとか、location.pathname などを使うのかと何となくは思っているのですが、以前教えて頂いた以下の一文をいれてもダメそうです、、、
history.replaceState(null, '', location.pathname);
よろしくお願いいたします。
1 likes