2012-02-29 28 views
5

我在調用一個函數,它構建了一個包含多個鏈接的表。JS:檢測沒有jQuery的右鍵單擊(內聯)

我想檢查一個鏈接是否已被點擊鼠標右鍵或左鍵。

我試着將以下部分添加到<a>超鏈接。

onmousedown="function mouseDown(e){ 
switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; } 
}" 

但沒有任何反應。如果我點擊一個鏈接。

+0

請勿使用內部事件處理程序屬性。改爲使用DOM事件綁定。 – Quentin 2012-02-29 14:37:22

+0

我試過了,但它對我沒有用。也許是因爲表格稍後加載(並且沒有出現在渲染頁面的源代碼中) – 2012-02-29 14:44:15

回答

14

的HTML:

<a href="#" onmousedown="mouseDown(event);">aaa</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

的JavaScript:

function mouseDown(e) { 
    e = e || window.event; 
    switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; 
    } 
}​ 

demo

+2

我非常確定,取決於全局事件對象使得這個IE-only – Quentin 2012-02-29 14:28:29

+0

@Quentin至少我在Chrome中嘗試過,和工作。 – xdazz 2012-02-29 14:30:43

+2

chrome:yes,firefox:no,IE9:no:\ – 2012-02-29 14:32:50

3

這是對xdazz答案的修改,它支持使用e.button的瀏覽器,對值進行規範化並將其存儲在e.which中。添加的行是JQuery庫中使用的行。

function mouseDown(e) { 
    e = e || window.event; 
    if (!e.which && e.button !== undefined) { 
    e.which = (e.button & 1 ? 1 : (e.button & 2 ? 3 : (e.button & 4 ? 2 : 0))); 
    } 
    switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; 
    } 
}​