2013-07-25 34 views
6

Tôi đã nhìn thấy rất nhiều câu hỏi và câu trả lời trên SO và các nơi khác nói về các sự kiện nhấp chuột phải và cách bắt và xử lý chúng bằng JavaScript, thường sử dụng thuộc tính .button của đối tượng event do trình duyệt tạo ra.Tôi có thể xử lý sự kiện nhấp chuột phải trên phần tử HTML <button /> không?

Tuy nhiên, điều tôi chưa tìm thấy, có lẽ vì đó là một yêu cầu khá kỳ lạ, là cách nắm bắt và xử lý các nhấp chuột phải trên phần tử HTML <button />. Các nút không được trình duyệt xử lý giống như các phần tử khác. Quan trọng nhất, có vẻ như một nhấp chuột phải vào một nút không làm bất cứ điều gì. Không có menu ngữ cảnh và, từ những gì tôi có thể nói, không có sự kiện.

Tôi có sai không? Tôi hy vọng như vậy, bởi vì nó sẽ làm cho cuộc sống của tôi dễ dàng hơn. Nếu không, tôi có thể mô phỏng một nút với một div và một số CSS, nhưng tôi muốn tránh nó. Có suy nghĩ gì không?

(PS: Đây là một dự án phụ ngớ ngẩn, do đó, đừng lo lắng về việc tôi cố gắng đặt giao diện dựa trên nút nhấp chuột trước bất kỳ khách hàng nào hoặc bất kỳ điều gì. giao diện mà có lẽ sẽ)

+0

Có thể trùng lặp: http://stackoverflow.com/questions/2405771/is-right-click-a-javascript-event – DevlshOne

+0

"Tôi có thể * mô phỏng nút bằng div" –

+0

Sự kiện 'contextmenu' kích hoạt cho tôi trên Chrome, Firefox, Opera (tất cả trên Linux) và trên IE10 trên Windows 7: http://jsbin.com/oduhak/1 Không có các trình duyệt IE tiện dụng trước đó để kiểm tra (có quá nhiều máy ảo đang chạy). –

Trả lời

10

chắc chắn, chỉ cần thêm một người biết lắng nghe onmousedown, kiểm tra mà chuột được nhấn:.

JS:

document.getElementById("test").onmousedown = function(event) { 
    if (event.which == 3) { 
     alert("right clicked!"); 
    } 
} 

HTML:

<button id="test">Test</button> 

Demo: http://jsfiddle.net/Jmmqz/

+1

@IanClark Nó có trong phiên bản mới nhất: 22.0 –

+0

Ồ, hmm - không làm việc lần đầu với tôi, lạ. –

+0

+1 nó hoạt động trong ff –

5

http://jsfiddle.net/jqYN5/ này là những gì bạn đang tìm kiếm? Thêm context-menu:

<input type="button" value="click me" id="btn"> 
<button id="btn2">right click</button>` 
document.getElementById('btn').onclick = function() { 
    alert('click!') 
} 

document.getElementById('btn2').oncontextmenu = function() { 
    alert('right click!') 
} 
+0

Đó chắc chắn là một cách khác để đi về nó. Cảm ơn! –

0

Bạn có thể tận dụng "Menu ngữ cảnh" cũng:

document.getElementById('btn2').oncontextmenu = function() { 
alert('right click!') 
} 
0

Hoặc, với có lẽ một chút hơn mức người mới bắt đầu hiểu biết:

<script type="text/javascript"> 
function mouseclick(ele, e) { 
if (e.type == 'click') { 
    alert('Left Click Detected!'); 
} 
    if (e.type == 'contextmenu') { 
    alert('Right Click Detected!'); 
} 
} 
</script> 

<a href="/" 
onclick="mouseclick(this, event)" 
oncontextmenu="mouseclick(this, event)" >link name</a> 
Các vấn đề liên quan