向下滚动单个页面时是否可以更改URL

ept*_*ype 21 javascript ajax url url-rewriting

当您使用ajax向下滚动单个页面时,是否可以更改URL?我在一个页面上都有一个网站,并希望产生这种效果.

例:

www.blablabla.com/blog
Run Code Online (Sandbox Code Playgroud)

用户向下滚动...

www.blablabla.com/blog/entry-name
Run Code Online (Sandbox Code Playgroud)

我知道哈希...我可以掩盖网址吗?

Eri*_*agt 29

我知道这是一个较旧的问题,但浏览器已经改变了,现在,可以做海报要求的事情.这意味着大多数其他答案不再有效.我发布了一种方法来实现这一点,以便它可以帮助使用Google的人找到正确的答案.

简而言之,在现代浏览器(支持HTML 5的浏览器)上,您可以.请看一下这篇文章.

它基本上归结为以下代码行:

window.history.pushState("object or string", "Title", "/new-url");
Run Code Online (Sandbox Code Playgroud)

执行上面的代码会将URL更改为example.com/new-url,并将帮助您完成所需的操作.

对于演示,您可以查看使用此方法的Webby奖.只需向上或向下滚动,看看裸露的地址.效果令人印象深刻.

  • 感谢您的回答。这正是我正在寻找的。另一个很好的例子:rollingstone.com/music/lists/15-great-albums-you-didnt-hear-in-2014-20141217 (2认同)

lms*_*lms 6

您可以使用pushState()修改浏览器URL栏中显示的URL,而无需重新加载或使用哈希.只要您的浏览器支持HTML5即可.

https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history


dtb*_*rne 4

不。也不知道你为什么想要这样做。

正如您所提到的,唯一的方法是将其添加到页面的哈希中,例如。

http://www.website.com/blog/#entry-name
Run Code Online (Sandbox Code Playgroud)

然后滚动到页面的该部分,例如:

if (window.location.indexOf("#") > 0) {
    var entry_id = window.location.substring(window.location.indexOf("#"));
    $('html, body').animate({
        scrollTop: $(entry_id).offset().top
    }, 2000);
}
Run Code Online (Sandbox Code Playgroud)

编辑:这对于window.history.pushState.