2016-04-18 5 views
0

Я хочу отключить меню правой кнопки мыши на столе. Потому что я использую rightclick, чтобы изменить его цвет (сделал небольшую игру Battleship). Однако я ничего не нашел, что все еще работает. Так что я был бы очень признателен ответ :)Отключить контекстное меню (щелкните правой кнопкой мыши) с помощью Javascript

Это вызов:

<td class="tdBox" onclick="attack(this, ${xStatus.count}, ${yStatus.count})" onmouseover="background(this)" onmouseout="backgroundLeave(this)" oncontextmenu="markField(this)"> 

и это функция JavaScript:

function markField(obj) { 
    obj.style.backgroundColor = 'blue'; 
    //return false; 
} 
+0

выглядит как частичное DUP из http://stackoverflow.com/questions/737022/how-do-i-disable-right-click-on-my-web-page – kay27

+0

Возьмите код из ссылки kay27. При этом замените строку «alert (status);» на ваш код изменения цвета. P.S. Я бы предложил не использовать правый клик для вашего ввода, так как это никогда не является хорошей идеей в веб-приложении. – jitendragarg

ответ

1

Вот как переопределить обработчик событий contextmenu:

document.addEventListener("contextmenu", function(e) { 
    e.preventDefault(); 
    alert('Right click'); 

    // Or, in you case: markField() 
}); 

Примечание: использование document не является обязательным требованием. Он будет работать на любом узле DOM. В качестве альтернативы вы можете сделать условие блокировки, проверив цель e.

Fiddle: https://jsfiddle.net/h1jdr1ew/1/

+0

Это работает частично, так как я не хочу отключать правый клик на всем сайте. Однако я нашел решение на основе этого, используя getElementsByClassName. 'function disableRightClick() { \t var tdBox = document.getElementsByClassName (" tdBox "); \t для (I = 0; I Selias

+0

Да, он будет работать на любом узле DOM, а не только на документе. –

0

Попробуйте этот код

<script language="javascript"> 
function markField(obj) 
{ 
    if(event.button==2) 
    { 
    //add your code here 
    obj.style.backgroundColor = 'blue'; 
    return false;  
    } 
} 
</script> 

<td class="tdBox" onclick="attack(this, ${xStatus.count}, ${yStatus.count})" 
onmouseover="background(this)" onmouseout="backgroundLeave(this)" 
oncontextmenu="markField(this)"> 
+0

Я пробовал его с возвратом false; но это не сработало. – Selias

+0

Какова ошибка? Кроме того, какой браузер? Некоторые браузеры не позволяют отключить правый клик. Редактировать: проверить консоль, чтобы увидеть, вызывает ли JS ошибку. – jitendragarg