如何使用JS中的函数关闭和打开右键?

时间:2017-02-22 01:33:36

标签: javascript jquery html right-click

我已使用以下内容禁用了我的应用程序中的右键单击:

  <body oncontextmenu="return false;">

我有一个启用了拼写检查的textarea元素。我希望能够在此字段中单击鼠标右键(对于拼写检查),但我希望右键单击以在应用程序中的其他位置禁用。

我做了以下事情:

  <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

我在上面的逻辑是,无论何时用户进入textarea,都会启用右键单击,但是当他们离开该字段时,它将再次被禁用。这不符合我的预期。

第一部分有效(当ueser进入字段时启用右键单击)。但是,当该字段保留时,右键单击不会再次被禁用。它只是继续。

他们是否更容易实现我想要的目标?

1 个答案:

答案 0 :(得分: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>

有关Element.matches

的详细信息,请参阅https://developer.mozilla.org/en/docs/Web/API/Element/matches