Nhấp chuột phải vào sự kiện Javascript? Nếu vậy, làm cách nào để sử dụng?Bạn có nhấp chuột phải vào sự kiện Javascript không?
Trả lời
Như những người khác đã đề cập, nút chuột phải có thể được phát hiện through the usual mouse events (mousedown, mouseup, click). Tuy nhiên, nếu bạn đang tìm kiếm sự kiện kích hoạt khi trình đơn nhấp chuột phải được đưa lên, bạn đang tìm kiếm địa điểm sai. Menu chuột phải/ngữ cảnh cũng có thể truy cập thông qua bàn phím (shift + F10 hoặc phím menu ngữ cảnh trên Windows và một số Linux). Trong tình huống này, sự kiện mà bạn đang tìm kiếm là oncontextmenu
:
window.oncontextmenu = function()
{
showCustomMenu();
return false; // cancel default menu
}
Đối với các sự kiện chuột tự, trình duyệt thiết lập một tài sản cho đối tượng sự kiện mà có thể truy cập từ sự kiện này chức năng xử lý:
document.body.onclick = function (e) {
var isRightMB;
e = e || window.event;
if ("which" in e) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB = e.which == 3;
else if ("button" in e) // IE, Opera
isRightMB = e.button == 2;
alert("Right mouse button " + (isRightMB ? "" : " was not") + "clicked!");
}
Có - đúng vậy!
function doSomething(e) {
var rightclick;
if (!e) var e = window.event;
if (e.which) rightclick = (e.which == 3);
else if (e.button) rightclick = (e.button == 2);
alert('Rightclick: ' + rightclick); // true or false
}
Về mặt kỹ thuật, nó không phải là "sự kiện" nhưng nó có thể được sử dụng. – ChickenMilkBomb
Mã của bạn không hiển thị ở tất cả mọi người sẽ gọi như thế nào ... –
@TimothyKhouri (và bất kỳ ai khác ở đây): đây là một chức năng nghe sự kiện tương thích. Bạn sẽ chuyển đối tượng hàm chính nó làm đối số thứ hai cho [addEventListener] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener), sau đó sẽ _call_ nó xuất hiện sự kiện được chỉ định. Ví dụ: 'elem.addEventListener (" click ", doSomething)' –
Không, nhưng bạn có thể phát hiện nút chuột nào được sử dụng trong sự kiện "onmousedown" ... và từ đó xác định xem đó có phải là "nhấp chuột phải" hay không.
vì vậy, nhấp chuột phải có kích hoạt sự kiện onclick không? – Brian
Bạn nói đúng, điều đó sẽ được thực hiện. –
@Brian: nhấp chuột phải sẽ kích hoạt 'onmousedown',' onmouseup' và 'onclick'. Tuy nhiên, nếu bạn đang xem xét ghi đè trình đơn nhấp chuột phải, những sự kiện này không phải là những gì bạn nên sử dụng (xem câu trả lời của tôi bên dưới). –
Vâng, đây là sự kiện có tên là javascript. Có một jQuery plugin quá để làm điều đó
có một cái nhìn vào mã jQuery sau:
$("#myId").mousedown(function(ev){
if(ev.which == 3)
{
alert("Right mouse button clicked on element with id myId");
}
});
Giá trị của which
sẽ là:
- cho nút trái
- cho nút giữa
- cho nút phải
Eeeew, thật khủng khiếp! Tại sao '.which' không giống với' .button'? O.o '.button' => * 0,1,2 *; 'which' => * 1,2,3 *. đó chỉ là sai. –
Ya, mặc dù w3c cho biết nhấp chuột phải có thể được phát hiện bởi sự kiện nhấp chuột, onClick không được kích hoạt thông qua nhấp chuột phải vào các trình duyệt thông thường.
Thực tế, nhấp chuột phải chỉ kích hoạt trênMouseDown trênMouseUp và onContextMenu.
Vì vậy, bạn có thể coi "onContextMenu" là sự kiện nhấp chuột phải. Đó là tiêu chuẩn HTML5.0.
Có, âm thanh như một giải pháp tuyệt vời, đặc biệt nếu bạn đang nhắm mục tiêu các trình duyệt mới hơn. Tôi không nghĩ đây chỉ là HTML5.0, bởi vì ngay cả IE 5.5 cũng hỗ trợ nó trên các phần tử! Dưới đây là thông tin thêm về những trình duyệt hỗ trợ: http://www.quirksmode.org/dom/events/contextmenu.html – Ignas2526
Xử lý sự kiện sử dụng thư viện jQuery
$(window).on("contextmenu", function(e)
{
alert("Right click");
})
Vâng, oncontextmenu có lẽ là lựa chọn tốt nhất nhưng lưu ý rằng nó gây nên trên chuột xuống trong khi nhấp vào sẽ kích hoạt trên chuột lên.
Các câu hỏi liên quan khác đã hỏi về nhấp chuột phải - dường như không được hỗ trợ ngoại trừ kiểm tra hẹn giờ thủ công. Một lý do mà bạn có thể muốn có khả năng nhấp chuột phải là nếu bạn cần/muốn hỗ trợ đầu vào chuột trái (nút đảo ngược). Việc triển khai trình duyệt dường như tạo ra nhiều giả định về cách chúng ta nên sử dụng các thiết bị đầu vào có sẵn.
Câu trả lời của tôi là window.oncontextmenu
, ví dụ:
window.oncontextmenu = function() {
alert('Right Click')
}
<h1>Please Right Click here!</h1>
Các mã sau đây được sử dụng jQuery để tạo ra một sự kiện tùy chỉnh rightclick
dựa trên mặc định mousedown
và mouseup
sự kiện. Nó xem xét những điểm sau đây:
- kích hoạt trên mouseup
- kích hoạt chỉ khi ép mousedown trên cùng một nguyên tố trước
- mã này đặc biệt cũng làm việc trong JFX Webview (kể từ khi sự kiện
contextmenu
không được kích hoạt ở đó) - nó không kích hoạt khi phím ContextMenu trên bàn phím được nhấn (như các giải pháp với
on('contextmenu', ...)
không
$(function()
{ // global rightclick handler - trigger custom event "rightclick"
\t var mouseDownElements = [];
\t $(document).on('mousedown', '*', function(event)
\t {
\t \t if (event.which == 3)
\t \t {
\t \t \t mouseDownElements.push(this);
\t \t }
\t });
\t $(document).on('mouseup', '*', function(event)
\t {
\t \t if (event.which == 3 && mouseDownElements.indexOf(this) >= 0)
\t \t {
\t \t \t $(this).trigger('rightclick');
\t \t }
\t });
\t $(document).on('mouseup', function()
\t {
\t \t mouseDownElements.length = 0;
\t });
// disable contextmenu
$(document).on('contextmenu', function(event)
\t {
\t \t event.preventDefault();
\t });
});
// Usage:
$('#testButton').on('rightclick', function(event)
{
alert('this was a rightclick');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="testButton">Rightclick me</button>
Nếu bạn muốn gọi hàm khi sự kiện click chuột phải nghĩa là chúng ta có thể sử dụng sau
<html lang="en" oncontextmenu="func(); return false;">
</html>
<script>
function func(){
alert("Yes");
}
</script>
Để xử lý click chuột phải từ chuột, bạn có thể sử dụng các sự kiện 'oncontextmenu'. Dưới đây là ví dụ:
document.body.oncontextmenu=function(event) {
alert(" Right click! ");
};
mã trên sẽ cảnh báo một số văn bản khi nhấn chuột phải được nhấn. Nếu bạn không muốn trình đơn mặc định của trình duyệt xuất hiện, bạn có thể thêm trả về false; Khi kết thúc nội dung của hàm. Cảm ơn.
Thay vì chỉ phản hồi bằng câu trả lời quảng bá một số khung, câu trả lời của bạn sẽ hữu ích hơn nếu nó chứa một vani giải pháp, và sau đó có lẽ được xây dựng trên nó để mô tả làm thế nào nó có thể được dễ dàng hơn để sử dụng khuôn khổ của bạn là tốt. – Xaniff
Ok ... Cảm ơn bạn đã giới thiệu .. Nó thực sự rất dễ dàng với vanilA js quá –
Cách dễ nhất để có được click chuột phải thực hiện là sử dụng
$('classx').on('contextmenu', function (event) {
});
Tuy nhiên đây không phải là giải pháp trình duyệt chéo, trình duyệt hành xử khác nhau cho sự kiện này đặc biệt firefox và IE. Tôi sẽ giới thiệu bên dưới cho giải pháp trình duyệt chéo
$('classx').on('mousedown', function (event) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode === 3) {
//your right click code goes here
}
});
- 1. Có phải sự kiện Nhấp chuột câm trong Fancybox không?
- 2. Sự kiện nhấp chuột Javascript không kích hoạt khi nhấp vào phần đệm của phần tử
- 3. Khi sự kiện chuột và chuột phải không bằng một cú nhấp chuột
- 4. FrameLayout nhấp vào sự kiện không phải là bắn
- 5. jQuery-JTable: thêm vào sự kiện nhấp chuột cho hàng?
- 6. Thêm trình xử lý sự kiện nhấp chuột vào Pushpin
- 7. Sự kiện liên kết để nhấp chuột phải
- 8. Nhấp chuột phải vào JButton
- 9. Sự kiện mờ dừng sự kiện nhấp chuột hoạt động?
- 10. Xoay văn bản tại sự kiện nhấp chuột vào nút
- 11. Có thể kích hoạt sự kiện nhấp chuột khi di chuột không?
- 12. javascript có thể mô phỏng nhấp chuột vào nút không?
- 13. Truy vấn sự kiện nhấp chuột Jquery
- 14. Child kiện yếu tố nhấp chuột kích hoạt các sự kiện mẹ nhấp chuột
- 15. WPF: Cách gán sự kiện nhấp chuột vào biểu mẫu
- 16. WP7 - Sự kiện nhấp chuột hình ảnh?
- 17. Bind JavaScript jQuery nhấp chuột sự kiện trên nhãn VÀ vào hộp kiểm đồng thời
- 18. chúng ta có thể nắm bắt sự kiện 'nhấp chuột phải' trên google-maps-v3 không?
- 19. javascript amChart sự kiện nhấp vào mục biểu đồ
- 20. Nhấp và kéo chuột Sự kiện WPF
- 21. Nhấp chuột phải vào hoạt động khác với nhấp chuột trái
- 22. iOS không nhận dạng các sự kiện nhấp chuột
- 23. UIButton không phản hồi sự kiện nhấp chuột trong UITableViewCell
- 24. jQuery: preventDefault() không hoạt động trên các sự kiện đầu vào/nhấp chuột?
- 25. JavaScript mô phỏng nhấp chuột phải qua mã
- 26. Jasmine không thể kích hoạt sự kiện nhấp chuột
- 27. Nhấp chuột phải vào chọn .Net TreeNode
- 28. Kích hoạt sự kiện trên nhấp chuột gốc nhưng không phải trên trẻ em
- 29. autohotkey ctrl + nhấp chuột = nhấp chuột phải
- 30. TabPage Nhấp vào Sự kiện
Cũng giống như vấn đề/nút nào, 'oncontextmenu' không được thực hiện giống nhau trong tất cả các trình duyệt ... xem http://www.quirksmode.org/dom/events/contextmenu.html đối với một số 'gotchas' . – smencer
@AndyE Hi Andy, biểu thức '(isRightMB?" Không phải là ":" ")' nên là '(isRightMB?"was": "không phải là") '. Đúng ? Xin vui lòng giúp đỡ để xem xét nó. –
@ Joe: funny như thế nào mà đã đi lên 32 phiếu và 4 năm mà không ai nhận thấy ;-) Tôi nghĩ rằng tôi có thể được miễn, mặc dù - đó là 00:30 sáng khi tôi đã viết câu trả lời! –