Javascript 禁用锚定标记

Javascript 禁用锚定标记,javascript,jquery,Javascript,Jquery,我如何在一个页面上放置一个链接来更改url,但不使用哈希状态就不会更改页面 我想把改变url的链接,并滚动到页面的相应部分。我不想使用散列,因为它们只是跳转到部分而不是滚动,而且我认为散列在url中看起来不太好。看看 据我所知,没有其他办法。看看 据我所知,没有其他方法。您尝试过jQuery ScrollTo插件吗 您是否尝试过jQuery ScrollTo插件 HTML5浏览器历史(又名PushState)是一种现代方法 它在浏览器中得到相当广泛的支持 HTML5浏览器历史(又名PushSt

我如何在一个页面上放置一个链接来更改url,但不使用哈希状态就不会更改页面

我想把改变url的链接,并滚动到页面的相应部分。我不想使用散列,因为它们只是跳转到部分而不是滚动,而且我认为散列在url中看起来不太好。

看看

据我所知,没有其他办法。

看看


据我所知,没有其他方法。

您尝试过jQuery ScrollTo插件吗

您是否尝试过jQuery ScrollTo插件

HTML5浏览器历史(又名PushState)是一种现代方法

它在浏览器中得到相当广泛的支持

HTML5浏览器历史(又名PushState)是一种现代方法

它在浏览器中得到相当广泛的支持


浏览器现在具有安全功能,可确保位置栏中显示的URL与实际显示的URL相匹配。如果不同时更改页面,则无法更改位置

但是,您可以在任意位置滚动页面,而无需更改URL。要滚动到特定元素,请获取其位置并使用
.animate()

​ 将其与
.on('click',…)
处理程序相结合,该处理程序使用
e.preventDefault()
取消URL更改,您就可以开始了

$('a[href^=#]').on('click', function(e) { // apply to all hash links
    var el = $(this).attr('href');        // get the href
    e.preventDefault();                   // cancel default click action
    $('body').animate({
        scrollTop: $(el).position().top   // scroll to the href ID instead
    });
});​

浏览器现在具有安全功能,可确保位置栏中显示的URL与实际显示的URL相匹配。如果不同时更改页面,则无法更改位置

但是,您可以在任意位置滚动页面,而无需更改URL。要滚动到特定元素,请获取其位置并使用
.animate()

​ 将其与
.on('click',…)
处理程序相结合,该处理程序使用
e.preventDefault()
取消URL更改,您就可以开始了

$('a[href^=#]').on('click', function(e) { // apply to all hash links
    var el = $(this).attr('href');        // get the href
    e.preventDefault();                   // cancel default click action
    $('body').animate({
        scrollTop: $(el).position().top   // scroll to the href ID instead
    });
});​

@Blazemonger pushState实际上允许您显示与“真实”(原始)URL不同的URL,前提是它具有相同的方案和域(这是安全方面)。您可以在这里的演示中看到这一点@Blazemonger pushState实际上允许您显示与“真实”(原始)URL不同的URL,前提是它具有相同的方案和域(这是安全方面)。您可以在这里的演示中看到这一点,无需插件即可完成。问题是url更改,这可以不用插件完成。问题是url更改希望能够在没有推送状态的情况下完成,但似乎对此可能性的一致答案是否定的。我们希望能够在没有推送状态的情况下完成,但似乎对此可能性的一致答案是否定的。