【问题标题】:Remove anchor links from URL with Smooth-Scroll使用 Smooth-Scroll 从 URL 中删除锚链接
【发布时间】:2017-10-02 13:21:03
【问题描述】:

这里是 StackOverflow 的新手,如果有什么我需要做的,请告诉我。

我在我的网站 (https://github.com/cferdinandi/smooth-scroll) 上使用 cferdinanadi 的平滑滚动插件,但我想在单击链接后摆脱 URL 中的锚链接。所以现在当我点击一个链接时,我的 URL 变为 (www.mysite.com/#anchor) 但我希望它保持为 (www.mysite.com)

在提供的文档 (https://github.com/cferdinandi/smooth-scroll) 的最底部,我找到了应该从 URL 中删除这些锚链接的辅助函数,但我不确定我应该将代码粘贴到哪里才能使其正常工作。

谁能帮助我?这是提供的应该修复它的代码:

var scroll = new SmoothScroll();

var smoothScrollWithoutHash = function (selector, settings) {
    /**
     * If smooth scroll element clicked, animate scroll
     */
    var clickHandler = function (event) {
        var toggle = event.target.closest( selector );
        console.log(toggle);
        if ( !toggle || toggle.tagName.toLowerCase() !== 'a' ) return;
        console.log(toggle.hash);
        var anchor = document.querySelector( toggle.hash );
        if ( !anchor ) return;

        event.preventDefault(); // Prevent default click event
        scroll.animateScroll( anchor, toggle, settings || {} ); // Animate scroll
    };

    window.addEventListener('click', clickHandler, false );
};

// Run our function
smoothScrollWithoutHash( 'a[href*="#"]' );

【问题讨论】:

  • 你能分享一下你拥有什么和想要什么的屏幕截图吗?如果您可以提供指向您的网站或 jsfiddler 的链接,也会很有帮助。
  • 该站点尚未启动。我也会在帖子中添加此编辑,但现在当我单击链接时我的 URL 变为 (mysite.com/#section1) 但我希望它保持为 (www.mysite.com)
  • 在var toggle ...上方添加event.preventDefault();

标签: jquery scroll smooth-scrolling


【解决方案1】:

好的,我最终只是使用了一种解决方法。

对于其他想弄清楚这一点的人,只需添加:

$(window).on('hashchange', function(e){
    history.replaceState ("", document.title, e.originalEvent.oldURL);
});

到 .js 文件的底部。

【讨论】:

    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多