javascript 删除URL中的锚

vd8tlhqk  于 2023-02-18  发布在  Java
关注(0)|答案(4)|浏览(230)

我的jQuery有一个问题,我有一个有多个锚点的网站,我使用平滑滚动来进入锚点。问题是我的URL中有锚点。
下面是我的代码:

/**
 * Checks if anchor exists. If it exists, scroll to it
 */
function scroll_if_anchor(href) {
    href = typeof(href) == "string" ? href : $(this).attr("href");

    // dynamically caluclates height
    var fromTop;
    var speed = 750; // Durée de l'animation (en ms)
    var headerHeight = $('#header').height(),
        navHeight = $('.nav-secondaire').height();

    if( headerHeight + navHeight > 200){
        fromTop = 300;
    } else {
        fromTop = 120;
    }

    // If our Href points to a valid, non-empty anchor, and is on the same page (e.g. #foo)
    // Legacy jQuery and IE7 may have issues: http://stackoverflow.com/q/1593174
    if(href.indexOf("#") == 0) {
        var $target = $(href);

        // Older browser without pushState might flicker here, as they momentarily
        // jump to the wrong position (IE < 10)
        if($target.length) {
            $('html, body').animate({ scrollTop: $target.offset().top - fromTop }, speed);
            if(history && "pushState" in history) {
                history.pushState({}, document.title, window.location.pathname + href);
                return false;
            }
        }
    }
}    

// When page loads, scroll to anchors
scroll_if_anchor(window.location.hash);

// Intercept all clicks on anchors
$("body").on("click", "a", scroll_if_anchor);

你有办法吗?
太感谢你了!

5sxhfpxr

5sxhfpxr1#

您发布的代码可以平滑滚动页面上的链接,当您访问页面时,可以滚动到特定的锚。请在javascript的末尾添加以下代码。确保在加载整个页面时调用它。

var url = window.location.hash;
url = url.substring(url.indexOf('#'));
scroll_if_anchor(url)
46qrfjad

46qrfjad2#

location.hash可能不包含初始的磅号,所以在将它传递给函数之前,必须确保它存在(函数希望井号在那里):

scroll_if_anchor(location.hash.replace(/^([^#])/, '#$1'));
fkvaft9z

fkvaft9z3#

添加这个答案可能有助于一些人登陆这个页面。
//首先:获取完整的url
变量hash_url =窗口位置
// second:简单地对哈希进行拆分
哈希_url =哈希_url.拆分(“#”);变量clean_url =哈希_url[0];
//检查干净的URL警报(clean_url);
//然后:
1.你可以用一个新的标签刷新页面。
1.对于页内滚动:将其添加到'clean_url'并使用scrollTop()。
替换(清除网址+"#您的新哈希”);

6rqinv9w

6rqinv9w4#

在此问题中:
How to remove the hash from window.location (URL) with JavaScript without page refresh?
可以使用以下代码删除散列
history.replaceState(null, null, ' ');

相关问题