make jQuery scrollTop 不留下浏览器历史记录
make jQuery scrollTop Not to leave browser history
我正在寻找一种解决方案,使 scrollTop 不会在浏览器历史记录中留下记录。
当我第一次启动页面时,如果 url 有一个带有内部锚名称的参数,我希望浏览器转到它的特定部分。所以我这样做:
$('html,body').animate(
{
scrollTop: $(".section[tagname='"+url_tagname+"']").offset().top
},
'slow');
但现在当我点击浏览器 "back" 按钮时,它会首先转到页面顶部。所以我实际上必须点击 "back" 两次才能转到上一页。
有没有办法让scrolltop不留下导航历史?
您不希望页面在点击同一页面时保存#anchor link 对吗?
使用侦听器,并防止默认 link 操作。
$('a').on('click', function(event) {
event.preventDefault();
event.stopPropagation();
});
这将避免您在历史记录中出现多个相同页面,但如果从另一个页面导航,您仍然会在 URL 中拥有 #anchor 标记。
编辑:实际答案由我自己在评论中提供:"You want to rewrite the URL? Your question was more towards anchor tags. If you want to change the url use: window.history.replaceState(). https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history"
我正在寻找一种解决方案,使 scrollTop 不会在浏览器历史记录中留下记录。
当我第一次启动页面时,如果 url 有一个带有内部锚名称的参数,我希望浏览器转到它的特定部分。所以我这样做:
$('html,body').animate(
{
scrollTop: $(".section[tagname='"+url_tagname+"']").offset().top
},
'slow');
但现在当我点击浏览器 "back" 按钮时,它会首先转到页面顶部。所以我实际上必须点击 "back" 两次才能转到上一页。
有没有办法让scrolltop不留下导航历史?
您不希望页面在点击同一页面时保存#anchor link 对吗?
使用侦听器,并防止默认 link 操作。
$('a').on('click', function(event) {
event.preventDefault();
event.stopPropagation();
});
这将避免您在历史记录中出现多个相同页面,但如果从另一个页面导航,您仍然会在 URL 中拥有 #anchor 标记。
编辑:实际答案由我自己在评论中提供:"You want to rewrite the URL? Your question was more towards anchor tags. If you want to change the url use: window.history.replaceState(). https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history"