2010-08-26 53 views
1

我在頁面上有一組鏈接。當用戶點擊一個鏈接時,它會觸發一個異步請求,頁面上的內容區域會用響應html進行更新。如何防止中間按鈕在瀏覽器中打開新選項卡?

這工作正常,除非用戶用'中間按鈕'(或鼠標滾輪,不管它叫什麼!)點擊鏈接。然後打開一個新選項卡,並將響應返回並呈現給該選項卡。

有什麼方法可以防止這種情況發生?

回答

2

用javascript捕捉鏈接並覆蓋默認鏈接行爲。

這樣的:

$('a.ajax').click(function(e){ 
    e.preventDefault(); 
    // do ajax stuff, and add an onfinish function that does 
    // something like document.location.href = this.attr('href'); 
}); 

你不必做document.location.href,正如我剛纔注意到一個內容區域進行更新。只需使用e.preventDefault()捕獲默認行爲;

//編輯 preventDefault不會停止鼠標中鍵...您是否考慮過不使用標籤?我知道它應該是可訪問的,所以也許是一個包含鏈接的跨度,所以你可以在span上添加onclick事件,並用css隱藏鏈接?

+0

我實施了你的建議,添加一個跨度的鏈接。這不是理想的,但它的工作原理。 – DaveDev 2010-08-30 15:03:49

0

不幸的是,不會出於安全原因,Javascript無法訪問該類控件,因爲它可能會被濫用。

+1

對於期待他正常的瀏覽器行爲的用戶(即他所要求的),它也只是令人煩惱 - 如果他們使用輔助功能工具則更糟糕。 – Rushyo 2010-08-26 08:52:20

+0

@Rushyo對此有一些合理的用途,比如ajax鏈接在自己的窗口中打開時沒有意義。您希望它看起來像一個鏈接,並使用鏈接標記來支持輔助功能,但是您希望點擊該標籤始終發出ajax請求,並且永遠不會在其自己的標籤中實際導航到該位置。 – AaronLS 2012-08-21 20:20:42

+0

@AaronLS您有兩個目標:提供輔助功能支持並提供點擊事件。將兩者分開。鏈接不是假裝成鏈接的鏈接不提供可訪問性,這是欺騙符合性檢查器的懶惰手段,它具有各種奇怪的語義,使其不適用於可訪問的,語義清晰的網頁。 – Rushyo 2012-08-22 13:02:35

相關問題