2012-11-26 122 views
1

我該如何在頁面上放置鏈接來更改url,但不會在不使用散列狀態的情況下更改頁面?禁用錨定標記

我想把鏈接,更改url和滾動到頁面的相應部分。我不想使用散列,因爲他們只是跳到部分,而不是滾動,我認爲散列在url中看起來不太好。

+1

http://www.whathaveyoutried.com –

+0

@Blazemonger pushState的並不實際允許你顯示一個不同的URL到 '真實'(原件)URL,只要它具有相同的方案和域(這是安全性方面)。你可以在http://html5demos.com/history –

回答

3

看看HTML5 Push State

有,據我所知,沒有其他辦法。

+0

希望能夠做到這一點沒有推狀態,但它看起來像這樣的可能性是一致的答案是否定的。 – Hat

1

瀏覽器現在有安全功能,確保地址欄中顯示的URL與實際顯示的內容相匹配。如果不同時更改頁面,則無法更改位置。

但是,您可以在任何地方滾動頁面而無需更改URL。滾動到一個特定的元素,獲得其位置和使用.animate()

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

與使用e.preventDefault()取消URL變化的.on('click',...)處理器結合這一點,你是好去。

$('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/