jquery - multiple - Evento de enlace al clic derecho del mouse
jquery css width (8)
¿Cómo puedo activar alguna acción con un clic derecho después de deshabilitar el menú contextual del navegador?
Intenté esto. . .
$(document).ready(function(){
$(document).bind("contextmenu",function(e){
$(''.alert'').fadeToggle();
return false;
});
});
¿Es contextmenu
un evento?
Utilizaría onmousedown
o onclick
luego tomaría la propiedad del botón MouseEvent
para determinar qué botón se presionó (0 = left, 1 = middle, 2 = right).
Encontré esta respuesta aquí y la estoy usando así.
Código de mi biblioteca:
$.fn.customContextMenu = function(callBack){
$(this).each(function(){
$(this).bind("contextmenu",function(e){
e.preventDefault();
callBack();
});
});
}
Código del script de mi página:
$("#newmagazine").customContextMenu(function(){
alert("some code");
});
Método .contextmenu : -
Pruebe de la siguiente manera
<div id="wrap">Right click</div>
<script>
$(''#wrap'').contextmenu(function() {
alert("Right click");
});
</script>
método .mousedown : -
$(''#wrap'').mousedown(function(event) {
if(event.which == 3){
alert(''Right Mouse button pressed.'');
}
});
No hay un controlador de eventos oncontextmenu incorporado en jQuery, pero puede hacer algo como esto:
$(document).ready(function(){
document.oncontextmenu = function() {return false;};
$(document).mousedown(function(e){
if( e.button == 2 ) {
alert(''Right mouse button!'');
return false;
}
return true;
});
});
Básicamente cancelo el evento oncontextmenu del elemento DOM para deshabilitar el menú contextual del navegador, y luego capturo el evento mousedown con jQuery, y allí se puede saber en el argumento del evento qué botón se ha pulsado.
Puedes probar el ejemplo de arriba here .
Para deshabilitar el menú contextual con el botón derecho en todas las imágenes de una página simplemente haz esto con lo siguiente:
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;};
}
Solo usa el controlador de eventos. Algo como esto debería funcionar:
$(''.js-my-element'').bind(''contextmenu'', function(e) {
e.preventDefault();
alert(''The eventhandler will make sure, that the contextmenu dosn't appear.'');
});
La función vuelve demasiado temprano. He agregado un comentario al código a continuación:
$(document).ready(function(){
$(document).bind("contextmenu",function(e){
return false;
$(''.alert'').fadeToggle(); // this line never gets called
});
});
Intente intercambiar el resultado return false;
con la siguiente línea
document.oncontextmenu = function() {return false;}; //disable the browser context menu
$(''selector-name'')[0].oncontextmenu = function(){} //set jquery element context menu