2011-11-25 76 views
3

當我添加一個HTML鏈接到頁面的特定部分:如何在不改變URL欄的情況下添加HTML哈希鏈接...?

<a href="#specific">test</a> 

我注意到它的變化在地址欄中的網址。儘管我遇到過那些沒有更新地址欄的鏈接。這怎麼可能?

編輯:這可能是一個AJAX溶液中,他們度過,即使沒有URL變化工作,因爲如果我沒有記錯,頁面沒有加載,就直接去了目的地......

+1

爲什麼不使用javascript,例如'window.scrollTo()'? –

+0

我沒有javascript的知識。你能否用一個有效的javascript例子來回答這個問題,我會對這個解決方案感到滿意。 –

+0

嗨Alehandro Darie,你能介紹一下爲什麼你不想改變URL欄的背景嗎?就這樣我們可以爲你構建一個答案。謝謝。 –

回答

9

你不妨看一下jquery插件scrollTo。

http://jquery.com

而對於scrollTo

幾個環節

http://demos.flesler.com/jquery/scrollTo/

http://flesler.blogspot.com/2007/10/jqueryscrollto.html

你可以做這樣的事情:

的HTML

<a href="#scrollToMe" class="scrollLink">click me to scroll</a> 
<div class="gap">a big gap</div> 
<h1 id="scrollToMe">I should scroll to here without a # in the URL</h1> 

的JavaScript(jQuery的和scrollto插件)

$(document).ready(function() { 
    $(".scrollLink").click(function(e) { 

     $.scrollTo($(this).attr("href"));  
     e.preventDefault(); 

    }); 

}); 

的JavaScript做什麼,是當過點擊一個鏈接,有類 「.scrollLink」,滾動頁面向下具有相同ID的元素,就像點擊特定鏈接的href一樣。然後e.preventDefault()停止它像正常的哈希鏈接一樣工作,並停止它出現在URL欄中。

這是給你一個工作示例:http://jsfiddle.net/alexkey/c3jsY/7/

而且在框架版本沒有,所以你可以看到,URL不會改變:

http://fiddle.jshell.net/alexkey/c3jsY/7/show/light/

這種方法有幾點好點

  1. 只需將scrollLink類應用到您想要停止哈希出現的鏈接(很好很容易)
  2. 它使用正常的href,這也意味着即使javascript被禁用,鏈接仍然可以工作 - 這對於可訪問性和可能的​​搜索引擎優化來說非常有用。
+0

尼斯解決方案:) –

+0

謝謝@ RichardJ.RossIII :-) –

+0

亞歷克斯這是非常出色的,非常感謝你! –

0

這是可能的使用javascript攔截點擊事件,執行你自己的定製邏輯,然後取消導航事件,以便URL永不改變

+0

您能否爲我寫這個解決方案的代碼?請注意,不幸的是,我沒有javascript知識,只有基本的HTML。 –

0

也許你可以嘗試類似:window.scroll(0,150); 而不是「(0,150)」把你的目標的cooridnate。

0

你將不得不試驗一下這個數字(這裏顯示爲200)來讓窗口正確對齊。

<a href="javascript:void(0);" onclick="window.scroll(0,200);">test</a> 
+0

如果我能正確對齊,所有瀏覽器的目標是否完全相同?正如我前面提到的,我對JavaScript並不是很有經驗,因此不知道它在哪些規則下運行。 –

相關問題