1

我将如何在更改 url 的页面上放置链接,但在不使用哈希状态的情况下不更改页面?

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

4

4 回答 4

3

看看HTML5 推送状态

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

于 2012-11-26T21:49:14.830 回答
3

你试过 jQuery ScrollTo 插件吗?http://archive.plugins.jquery.com/project/ScrollTo

于 2012-11-26T21:49:19.730 回答
1

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

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

$('body').animate({scrollTop: $('#element').position().top});

.on('click',...)​将此与用于取消 URL 更改的处理程序结合起来e.preventDefault(),您就可以开始了。

$('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
    });
});​

http://jsfiddle.net/mblase75/WFKUE/

于 2012-11-26T21:52:09.600 回答
0

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

https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history

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

http://caniuse.com/history

于 2012-11-26T21:49:26.717 回答