2017-02-22 2 views
0

Я отключил правой кнопкой мыши в моем приложении, используя следующие:Как можно щелкнуть правой кнопкой мыши и использовать функции в JS?

<body oncontextmenu="return false;"> 

У меня есть элемент, который текстовой имеет проверку орфографии включена. Я хочу иметь право щелкнуть правой кнопкой мыши в этом поле (для проверки орфографии), но я хочу, чтобы щелчок правой кнопкой мыши был отключен везде в приложении.

Я сделал следующее:

<textarea onfocus="rightclickon()" onblur="rightclickoff()" spellcheck="true"></textarea> 

Эти функции:

function rightclickon() { 
$('body').prop('oncontextmenu', 'null'); 
}//end rightclickon 
function rightclickoff() { 
$('body').prop('oncontextmenu', 'return false'); 
}//end rightclickoff 

Моя логика выше в том, что всякий раз, когда пользователь вводит в текстовое поле, щелкните правой кнопкой мыши будет включен, но когда они покинут поле, он будет снова отключен. Это не работает, как я ожидал.

Работа первой части (щелкнуть правой кнопкой мыши, когда ueser входит в поле). Однако, когда поле остается, щелкните правой кнопкой мыши, он не будет снова отключен. Он просто остается.

Это их более простой способ достичь того, чего я хочу?

+3

почему бы отключить правую кнопку мыши? – guradio

+0

Чтобы приложение HTML выглядело скорее как «приложение» и менее похоже на веб-сайт. – cleverpaul

+0

Отключение контекстного меню браузера раздражает пользователей. Для этого редко есть веская причина, и желание получить определенное «чувство» не является веской причиной. И тем не менее, люди с технологией могут обойти это. – nnnnnn

ответ

3

Просто проверить происхождение этого события и решить, что делать соответственно

document.addEventListener('contextmenu', function(e) { 
 
    if (!e.target.matches('textarea')) { 
 
    e.preventDefault() 
 
    } 
 
}, false)
<p>Some paragraph</p> 
 
<ul> 
 
    <li>List 1</li> 
 
    <li>List 2</li> 
 
    <li>List 3</li> 
 
</ul> 
 

 
<textarea>Just try right-clicking in here</textarea> 
 
<p>Another paragraph</p>

См https://developer.mozilla.org/en/docs/Web/API/Element/matches подробности о Element.matches

+0

интересно, если вы удерживаете сдвиг в Firefox, он показывает контекстное меню, щелкая правой кнопкой мыши –

+0

Отлично! Именно то, что я искал. – cleverpaul

+1

@MatthewLock да, обычно есть много способов обойти сайты, которые пытаются заблокировать щелчок правой кнопкой мыши – Phil

Смежные вопросы