2010-11-24 44 views
2

我有一個jQuery的彈出窗口附加到鏈接。如果頁面未被完全加載(即.js文件),當鏈接被點擊時,它將在瀏覽器窗口中打開而不是彈出。jQuery禁用鏈接,直到頁面加載

我正在考慮禁用/隱藏鏈接,直到頁面加載。

對於處理這個scenrio最好的做法是什麼,並且你有任何代碼示例?

+1

我會建議使用像接受的回答我的問題:http://stackoverflow.com/questions/3461152/progressive-enhancement-and-initial-display-state – Sonny 2010-11-24 14:14:16

回答

5

第一名您在DIV部分的鏈接,使該分區隱藏

<div style='display:none' id='LinkId'><a href=''>click</a></div> 

現在寫在頭部分的代碼

<script language="javascript"> 

$(document).ready(function() { 
    $('#LinkId').show(); 
}); 

</script> 
+1

這應該完美。 如果您有時間並希望改善用戶體驗,而不是隱藏它,則可以將其設置爲禁用的元素(使用CSS),並在.ready事件中將其替換爲工作鏈接。真的很簡單,用jQuery。 – Nacho 2010-11-24 12:57:06

1

其實這是恕我直言,一個很好的例子,爲什麼在直接分配事件處理程序儘管有許多人說,HTML代碼並不一定是壞事。

如果您使用的是<a href="" onclick="myClickHandler()">Link</a>,那麼鏈接的可見性和您可以使用它的時間之間將沒有差距。它提高了可用性,因爲用戶不需要等待頁面完全加載,並且在他看到它的那一刻仍然使用該鏈接。

-1

我也有類似的問題,其中一個鏈接的href正在由服務器和在href填充頁面加載之前進行修改,以美國/ EN或/德/日的URL之前,

因此,如果我們點擊在頁面完全加載之前的鏈接上,它會轉到不完整的URL,因此我會找不到頁面。

因此,我採取的解決方案是: 儘快從客戶端添加onclick =「event.preventDefault()」,然後在url更新時將其修改爲onclick =「」。

所以這個問題得到解決,當網址不完整,然後點擊沒有發生。

0

我有同樣的問題,這裏是我如何解決它。

我不得不創建另外一個虛擬鏈接到我真正的鏈接即

<!--fake link is visible by default--> 
<li class="li_1"> 
<a class="dropdown-toggle" href="my_real_link_not_popup.html">Compose</a> 
</li> 

<!--original link is hidden with the hidden class by default--> 
<li class="li_2 hidden"> 
<a class="dropdown-toggle ajax-popup-link_write" id="write_main_a" href="my_real_link_is_popup.html">Compose</a> 
</li> 

我的劇本要這樣:

$(document).ready(function() 
{ 
    //prevent event from being fired before page load 
    $(".li_1").addClass("hidden"); 
    $(".li_2").removeClass("hidden"); 
}); 

使頁面加載與假鏈接,onpage load == "finish"然後虛假鏈接被隱藏,真正的鏈接變得可見。

唯一不利的一面是用戶必須始終在其瀏覽器中啓用Java腳本,否則他們將無法訪問彈出窗口。但請注意,虛假鏈接仍然可以重定向到與彈出窗口內容相同的另一頁面。 眼色

希望這有助於

相關問題