2011-05-27 50 views
20

當您使用ajax向下滾動單頁時可能會更改網址嗎?我有一個網站都在一個頁面上,並希望有這種效果。當您向下滾動單頁時可能會更改網址

例如:

www.blablabla.com/blog 

用戶向下滾動...

www.blablabla.com/blog/entry-name 

我知道哈希...我可以掩蓋網址是什麼?

+0

我很好奇看到這裏,但我的直覺是這是一個_bad practice_。所以,如果我在查看blabla博客主頁並向下滾動幾個帖子,我的地址欄會動態變化,因此當我將該URL複製並粘貼到朋友時,他們會看到頁面處於相同的書籤/滾動位置? – pixelbobby 2011-05-27 00:36:17

+0

是的,這是我想要發生的事情。 – eptype 2011-05-27 00:39:12

+0

更好的交叉你的手指在這一個... – pixelbobby 2011-05-27 00:40:11

回答

4

不知道你爲什麼要這麼做。

正如你所提到的,唯一的辦法是將它添加到頁面的散列,例如。

http://www.website.com/blog/#entry-name 

然後滾動到頁面的一部分,是這樣的:

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

編輯:這是長久以來可能與window.history.pushState

+0

我想這樣做,以便當博客文章被分享時,它將被放置在頁面上的正確位置。 – eptype 2011-05-27 00:40:34

+0

好的,看我的文章的編輯。 – dtbarne 2011-05-27 00:44:49

+0

所以我可以掩蓋該網址從www.homepage.com/blog/#entryname到www.homepage.com/blog/entryname – eptype 2011-05-27 01:15:17

-2

沒有,出於安全原因,你不能使用JavaScript

+2

其實你沒有被允許不刷新就改變它。 – Bakudan 2011-05-27 00:39:03

+0

是什麼安全原因? – eptype 2011-05-27 00:40:52

+4

以及通過更改網址,您可以欺騙用戶認爲他們在網站上,他們真的不是。就像他們訪問www.blablabla.com/blog並將網址更改爲www.yourbank.com,他們可能認爲他們實際上正在查看他們的銀行網站。 – CodeMan 2011-05-27 00:46:14

-1

是更改URL,就可以了,但它是一個有點棘手。

如果您有這方面的index.html頁:

<a id="link-to-later" href="#later">Go to later</a> 
    <p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p><p>lorem ipsum</p> 
    <a id="later" name="later">Some later anchor</a> 

然後點擊上面的鏈接將帶你到下面的錨無需重新加載頁面和URL將被index.html#later

通過使用window.onscroll事件,您可以將事件掛接到向下滾動頁面的用戶。事件處理程序可能包含諸如$('#link-to-later').click()之類的內容,它會通過later定位點將用戶的瀏覽器指向該頁面。

您將需要做一些工作,以防止它太過波折,但它是可行的。

+0

之前沒有看到@ dtbarne的回答 - 請檢查一下 – smartcaveman 2011-05-27 00:49:17

28

我知道這是一個有點舊的問題,但是瀏覽器改變了,而現在,這是可以做到的海報什麼要求。這意味着大多數其他答案不再有效。我正在發佈一種方法來完成此操作,以便它可以幫助使用Google的人找到正確的答案。

簡而言之,在現代瀏覽器(支持HTML 5的瀏覽器)上,您可以。請看this文章。

它基本上歸結爲下面的行的代碼:

window.history.pushState("object or string", "Title", "/new-url"); 

執行以上代碼將所述URL更改爲例子。com/new-url,並且會幫助你完成你想要的東西。

對於演示,您可以看看使用此方法的Webby Awards。只需向上或向下滾動,然後查看裸露的地址。效果非常令人印象深刻。

+0

感謝您的回答。這正是我正在尋找的。另一個很好的例子:rollingstone.com/music/lists/15-great-albums-you-didnt-hear-in-2014-20141217 – 2014-12-18 08:34:30

相關問題