如何关闭右键单击并使用 JS 中的函数?

How can I turn right click off and on using functions in 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

我上面的逻辑是,每当用户进入文本区域时,右键单击将被启用,但当他们离开该字段时,它将再次被禁用。这不符合我的预期。

第一部分有效(当用户进入该字段时启用右键单击)。但是,当字段离开时,右键单击不会再次被禁用。它只是保持打开状态。

他们是实现我想要的更简单的方法吗?

只需检查事件的起源并相应地决定要做什么

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