2012-02-29 37 views
5

Tôi đang gọi một hàm, xây dựng một bảng bao gồm một số liên kết.JS: phát hiện nhấp chuột phải mà không cần jQuery (nội tuyến)

Tôi muốn kiểm tra xem một liên kết đã được nhấp bằng chuột phải hay trái.

Tôi đã cố thêm phần sau vào liên kết <a>.

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

Nhưng không có gì xảy ra Nếu tôi nhấp vào liên kết.

+0

Không sử dụng thuộc tính xử lý sự kiện nội tại. Thay vào đó, hãy sử dụng liên kết sự kiện DOM. – Quentin

+0

Tôi đã thử, nhưng nó không hiệu quả với tôi. Có lẽ vì bảng được tải sau (và không xuất hiện trong mã nguồn của trang được hiển thị) –

Trả lời

14

Các html:

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

Các 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; 
    } 
}​ 

Các demo.

+2

Tôi khá chắc chắn rằng tùy thuộc vào đối tượng sự kiện toàn cầu làm cho IE chỉ – Quentin

+0

@Quentin Ít nhất, tôi đã thử nó trong Chrome, và làm việc. – xdazz

+2

chrome: yes, firefox: no, IE9: no: \ –

3

Đây là sửa đổi câu trả lời của xdazz hỗ trợ các trình duyệt sử dụng e.button, bình thường hóa giá trị và lưu trữ trong e.which. Các dòng được thêm vào là những gì được sử dụng trong thư viện 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; 
    } 
}​ 
Các vấn đề liên quan