2009-04-01 44 views
58

Làm cách nào để kích hoạt một số thao tác với nhấp chuột phải sau khi tắt trình đơn ngữ cảnh của trình duyệt?Sự kiện liên kết để nhấp chuột phải

Tôi đã thử cách này. . .

$(document).ready(function(){ 
    $(document).bind("contextmenu",function(e){ 
     $('.alert').fadeToggle(); 
     return false; 
    }); 
}); 
+1

Xem http://stackoverflow.com/a/2725963/287948 –

+0

Bạn đang cố gắng làm một cái gì đó _after_ hàm trả về! – Tom

Trả lời

93

Không có built-in xử lý sự kiện oncontextmenu trong jQuery, nhưng bạn có thể làm điều gì đó như thế này:

$(document).ready(function(){ 
    document.oncontextmenu = function() {return false;}; 

    $(document).mousedown(function(e){ 
    if(e.button == 2) { 
     alert('Right mouse button!'); 
     return false; 
    } 
    return true; 
    }); 
}); 

Về cơ bản tôi hủy bỏ sự kiện oncontextmenu của phần tử DOM để vô hiệu hóa các menu ngữ cảnh của trình duyệt , và sau đó tôi nắm bắt sự kiện mousedown với jQuery, và ở đó bạn có thể biết trong đối số sự kiện mà nút đã được nhấn.

Bạn có thể thử ví dụ trên here.

+0

Không phải là '$ (tài liệu) [0]' giống như 'tài liệu'? – configurator

+0

@configurator, vâng đó là lỗi đánh máy. Cảm ơn :) – CMS

+1

Câu trả lời của bạn sai: http://jsfiddle.net/Zmdzv/ – andrewrk

0

Có phải contextmenu là sự kiện?

Tôi sẽ sử dụng onmousedown hoặc onclick sau đó lấy nút tài sản 's MouseEvent để xác định nút được nhấn (0 = trái, 1 = giữa, 2 = bên phải).

47

Hàm trả về quá sớm. Tôi đã thêm một bình luận cho đoạn code dưới đây:

$(document).ready(function(){ 
    $(document).bind("contextmenu",function(e){ 
     return false; 
     $('.alert').fadeToggle(); // this line never gets called 
    }); 
}); 

Hãy thử trao đổi các return false; với dòng tiếp theo.

+6

+1, ràng buộc 'contextmenu' hiện được hỗ trợ! –

+0

"hỏi ngày 1 tháng 4 năm 2009" - Tôi cho rằng điều này là không đáng kể. ;) –

+0

@zourtney Điều gì khiến bạn kết luận điều đó? Các tài liệu jQuery không đề cập đến bất cứ điều gì về việc hỗ trợ 'contextmenu' ... – bart

15

Chỉ cần sử dụng trình xử lý sự kiện. Một cái gì đó như thế này sẽ hoạt động:

$('.js-my-element').bind('contextmenu', function(e) { 
    e.preventDefault(); 
    alert('The eventhandler will make sure, that the contextmenu dosn't appear.'); 
}); 
2

Tôi tìm thấy câu trả lời ở đây và tôi đang sử dụng nó như thế này.

Mã từ Thư viện của tôi:

$.fn.customContextMenu = function(callBack){ 
    $(this).each(function(){ 
     $(this).bind("contextmenu",function(e){ 
      e.preventDefault(); 
      callBack(); 
     }); 
    }); 
} 

Mã từ kịch bản trang của tôi:

$("#newmagazine").customContextMenu(function(){ 
    alert("some code"); 
}); 
1
document.oncontextmenu = function() {return false;}; //disable the browser context menu 
$('selector-name')[0].oncontextmenu = function(){} //set jquery element context menu 
0

Để vô hiệu hóa menu chuột bối cảnh ngay trên tất cả hình ảnh của một trang chỉ làm điều này với sau:

jQuery(document).ready(function(){ 
    // Disable context menu on images by right clicking 
    for(i=0;i<document.images.length;i++) { 
     document.images[i].onmousedown = protect; 
    } 
}); 

function protect (e) { 
    //alert('Right mouse button not allowed!'); 
    this.oncontextmenu = function() {return false;}; 
} 
0

.contextmenu phương pháp: -

Hãy thử như sau

<div id="wrap">Right click</div> 

<script> 
$('#wrap').contextmenu(function() { 
    alert("Right click"); 
}); 
</script> 

.mousedown phương pháp: -

$('#wrap').mousedown(function(event) { 

     if(event.which == 3){ 
      alert('Right Mouse button pressed.'); 
     } 
}); 
Các vấn đề liên quan