2013-11-01 79 views
4

我有一個帶有下一個和上一個按鈕的照片庫。如果其中一個JavaScript方法由於某種原因被某個或某個按鈕單擊時出現故障,則會爲該網址添加散列,即www.google.com#。我知道散列可以被賦予一個div id跳轉到頁面的那一部分,但是當它是空白的時候,它會跳過我的頁面幾次,我不確定它的目標是什麼。我想過試圖從網址中刪除散列,但是我必須確保在每一個動作上,這似乎是不好的做法。如果散列對頁面上的操作沒有影響,我寧願選擇。空的URL哈希導致頁面跳轉到js事件

+1

'空白散列'通常會將您的瀏覽器窗口置於頁面頂部。 – putvande

+0

請仔細閱讀本文:http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false聽起來像您需要防止默認事件。 –

+0

我知道阻止默認值,但如果錨標記href中的散列值不正確,那麼更容易更改,然後附加處理程序以防止默認值。我最大的問題是打破了JavaScript,所以我不想用JS解決它,如果我能避免它。 – JewrassicPark

回答

2

不要使用href="#",這是不正確的。

相反,使用href="javascript:;"或其變體(我個人使用javascript:void(null);
此明確指出鏈接不轉到另一個位置,而是由JavaScript處理。

+0

這就是我所擔心的。我知道在某些時候它已經設置爲href ='/',現在大多數都是href ='#',但改變它可能是最簡單的解決方案。 – JewrassicPark

+4

我不明白'href =「#」'會是「不適當的」,它只是一個指向書籤的鏈接。使用'href =「javascript:;」'不會告訴瀏覽器一個腳本正在處理這個動作,它會要求'href'中的腳本找到要導航的位置。由於該腳本的值爲「未定義」,因此瀏覽器無法在任何位置導航。 – Guffa

2

我猜Next和Prev按鈕有像標記一樣的<a href="#" ...</a>。在這種情況下,您可以添加事件監聽器與這些鏈接與jquery

$('#prev, #next').on({ 
    'click': function(e) { 
     e.preventDefault(); 
    } 
}) 

並避免更改瀏覽器的位置。或者純javascript:

document.querySelectorAll('#prev, #next').addEventListener('click', function(e) { 
    e.preventDefault(); 
},false) 
//Note: this code is not cross-browser 
0

當您不想執行導航功能時,不要使用錨標籤。使用button