我已使用以下内容禁用了我的应用程序中的右键单击:
<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进入字段时启用右键单击)。但是,当该字段保留时,右键单击不会再次被禁用。它只是继续。
他们是否更容易实现我想要的目标?
答案 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