2012-05-12 25 views
0

因爲this話題轉向跨學科(但仍然是關於用戶體驗)我curiuos是什麼想想這個javacript開發人員。區分內部操作和ajax請求的鏈接的最佳方法?

我的網站處理a標籤href作爲ajax請求開始#。如果請求成功,那麼它會將文檔散列更改爲合適。現在我想實現一些調用內部js函數的動作鏈接,比如去站點頂部,但我不想要javascript:myAction()參考,因爲大多數瀏覽器在鏈接結束時顯示引用url的提示。可能我可以使用併成功處理自己的url模式,例如action:myAction,但這還不夠解決方案 - 用戶仍然暗示有關魔術網址。另一種選擇是使用自定義屬性,如action="myAction"href作爲自定義字符串,例如href="Go to top",但是什麼與瀏覽器兼容?最後的解決方案是使用span作爲鏈接執行操作 - 用戶不會暗示任何url,但這是鏈接功能的一部分,它暗示執行操作(轉到url默認值)。

有什麼更好,爲什麼?

回答

0
<script> 
if(window.addEventListener)//Chrome, Firefox and Safari 
    document.getElementById('myLink').addEventListener('click',function(e){ 
     var e = e || event; 
     e.preventDefault(); 
     window.location = destiny; 
    }); 
else//IE and Opera 
    document.getElementById('myLink').attachEvent('onclick',function(e){ 
     var e = e || event; 
     e.preventDefault(); 
     window.location = destiny; 
    }); 
</script> 
<a href="#" id="myLink">Link</a> 
+0

我知道如何實施。我問從用戶的角度來看哪種解決方案更好。其中一個作爲常規鏈接,其次不是。如果我能給你-1,因爲這不是我要求的。我不明白你爲什麼寫任何代碼... – kbec

+0

我想這種方式是最好的解決方案 –

0

您應該先讓您的鏈接工作without JavaScript。那麼你不必擔心有人點擊<a href='/customers'>Customers!</a>。它很好地工作,並且可以訪問。一旦你達到這一點,你就把JavaScript放在最前面,以增強用戶體驗。你怎麼掛鉤所有這些最多是給你 - 說你要處理刪除一個通用的方法,你可能看起來像這樣的鏈接:

<a href='/customers/2' class='delete'>Delete customer</a> 

<a href='/customers/2' data-action='delete'>Delete customer</a> 

或者,如果它的每個環節具體的,你設定的ID並以此方式連線:

<a href='/customers/2' id='delete'>Delete customer</a> 

所有接線應該在外部JavaScript文件中完成。

+0

我不是usign服務器相關的鏈接,因爲我的web應用程序只有一個名爲索引(目前它是PHP)的HTML文件。所有的數據請求都是通過用'href'在'a'標籤上捕獲鏈接開始的,並由客戶端ajax引擎進行翻譯和處理。這是嚴格的JS應用程序。當您懸停鏈接時,您的瀏覽器的內置操作會通知您有關它的網址。我想要的只是一個很好的解決方案,使用無需請求的內部js-action鏈接和用戶友好的瀏覽器內置提示。或者如果沒有其他方法,則不需要.Ah – kbec

+0

啊 - 當然,處理與href-first-hash的鏈接必須保持原樣。代碼事件處理不是我的問題。 – kbec

0

我會通過一種方式的用戶第一次寫的一切,而不JS可以使用它,就像

<a href="#" title="Go to the top of the page">Go to top</a> 

然後我會採取JS加載DOM後立刻加強它做到這一點。首先通過添加onclick事件,然後刪除href,以避免任何鏈接提示(除鏈接之外的任何其他內容可能不會通過任何驗證程序),並最終創建一個新的樣式屬性,使光標變爲懸停指針。

它是非常有用的programmatic progressive enhancement structure的一部分。這樣我就可以獲得有效且兼容的代碼以及舒適的行爲。