2011-08-18 35 views
2

我有a href其中指出#A HREF指出,無處加#到網址

<a href="#" id="bla" >Bla<a> 

我有上點擊一個HREF顯示彈出的onclick功能。

function doingClick() 
{ 
    //display popup 
    return false; 
} 

但點擊符號後#每次都添加到瀏覽器的url中。

因此,舉例來說,如果URL就像之前我點擊我的鏈接http://mywebsite.com

但點擊a href的URL看起來就像是後:http://mywebsite.com#

有什麼辦法避免這種行爲呢?

+1

您是否嘗試不添加「href」屬性? –

回答

10

爲了避免這種嘗試添加return false;

<a href="#" onclick="doingClick(); return false;">Link</a> 

你也可以用void(0)

<a href="javascript:void(0)" onclick="doingClick();">Link</a> 

有在Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

+0

這是我的首選選項。我幾乎感到內疚,沒有告訴用戶他們要點擊的鏈接使用Javascript,所以我經常使用'javascript:void(0)' - 說過,你可能想在'href'中放入一個真正的鏈接並使用Javascript將其更改爲'javascript:void(0)',以便沒有JS的用戶仍然可以到達某處。只是我的0.02 –

4
與此相關的(小宗教戰爭!)的熱門問題
<a href="#" id="bla" onclick="return doingClick()">Link</a> 

不要忘記返回你的函數返回。否則,您只需調用它而不暫停後續事件。

1

除了添加一個href,你可以添加一個style =「cursor:pointer;」 這與顯示超鏈接的效果相同,沒有頁面內錨定效果。

<a id="bla" onclick="return doingClick()" style="cursor:pointer;">Link</a> 
0

#用於鏈接元素的ID,並在「空」的HREF使用時將始終被添加到您的網址。你可以做什麼,如果它真的惹惱你,是從location.hrefdoingClick功能

+0

這將導致不必要的重定向... – Purag

+0

這是真的,只是我很聰明地做了一些事情 - 但我檢查了,我沒有:( –

0

刪除一個簡單的解決方法是將HREF空:

<a href="" id="bla" onClick="alert('Hi');">Bla<a> 

仍然有效。

0

該網址並未指向任何地方。該URL是相對於#的URL,換句話說,該URL解析爲<current_url>#,在這種情況下爲http://mywebsite.com#

要避免此行爲,您必須更改URL。

如果你有一個的onclick處理程序返回false,則應該避免鏈接活躍:

<a href="#" onclick="return doingClick();">link</a> 

您也可以使用JavaScript:無效(0)作爲連結href中。

在這兩種情況下,請注意當您使用JavaScript訪問它的某些部分時,網站的可訪問性下降。那些禁用JavaScript的用戶,沒有啓用JavaScript的瀏覽器或使用屏幕閱讀器或其他可訪問工具可能無法使用該網站。

if(document.location.href[document.location.href.length-1]=='#'){ 
    document.location.href = document.location.href.substring(0, document.location.href.length-2) 
} 

I DO:

0

如果你沒有得到更好的答案,你可以通過網頁上放置腳本標籤很早(在身體頭部或開頭)用下面的JavaScript讓討厭醜陋的解決方法不建議你這樣做,因爲#會在url中引起對服務器的雙重請求,但是如果必須的話,它會在這裏。

2

雖然有是其他有效的解決方案,我個人比較喜歡這個較短的解

<a href="javascript:;">Link</a> 

另一個好處是,此解決方案不滾動到窗口的頂部。