2011-02-08 84 views
5

我有一個帶有一些鏈接的網頁,我需要通過jQuery攔截鏈接單擊事件。任務完成的很好,但後來出現了一個問題:如果用戶點擊一個鏈接,當JavaScript沒有完成加載,它鏈接到另一個頁面(這是一個錯誤)。防止在頁面加載時點擊鏈接

我試圖找到一種方法來禁用頁面加載完成之前,鏈接點擊,但最好的解決辦法,現在是我必須補充onclick="return false;"到我的鏈接,這是不是很優雅。有沒有更好的解決方案?

感謝您的幫助,

+3

爲什麼不派HREF作爲另一個屬性,然後複製,當鏈路準備好被點擊屬性HREF? – jrockway 2011-02-08 03:32:02

+0

@jrockway:感謝您的建議,但我認爲這樣做並不方便。 – 2011-02-08 04:53:10

回答

0

這是我制定的一個解決方案:使用放置在鏈接前面的masker來防止點擊事件。

<div class="LinkMasker"></div> 

.LinkMasker { 
    position: absolute; 
    z-index: 999; 
    width: ...px; 
    height: ...px; 
} 

頁面加載&我的活動結束後都註冊了,去掉掩蔽物:

$('.LinkMasker').remove(); 
+0

我知道這是少數,但Javascript關閉的用戶無法以這種方式使用您的網站。 – kapa 2014-08-07 09:20:36

5

你可以嘗試使用的初始化腳本:

<script language="javascript"> 

var loaded = false; 

function SetLoaded() { loaded = true; } 

window.onload = SetLoaded; 

</script> 

那麼你可以添加到onclick="return loaded;"您的href。由於在頁面加載之前加載將不成立,因此應該禁用添加了該功能的鏈接。

1

讓jQuery在你的document.ready()的鏈接中設置hrefs。也許用'#'加前綴你的鏈接,並讓jQuery去掉它們。

+0

謝謝,雖然我不認爲這是好的做法:( – 2011-02-08 05:07:01

3

今天,所以我做了[R & d,並計算出它的另一種方式,我面臨着這個問題。 document.readyState將在頁面加載完成後「完成」,因此您可以檢查其值。

if(document.readyState=='complete') 
{ 
    //// call script or do anything which you want to do. 
}