javascript - VUE 和 JS:在 contenteditable 元素上禁用除复制粘贴 (CTRL + C) 之外的所有键盘事件
问题描述
如何contenteditable
在允许复制粘贴内容的同时禁用元素上的所有键盘事件?
用户仍应看到鼠标光标
试过这个不起作用:
const inputEvt = (e) => {
e.preventDefault();
if (e.keyCode === 91 && e.keyCode === 67) {
return true;
}
return false;
};
解决方案
您可以更新inputEvt
以检查ctrlKey
或metaKey
(在 macOS 上,⌘</kbd>+C and ⌘</kbd>+V are copy and paste respectively) along with C
or V
. Also move the e.preventDefault()
to the else
clause, or else the copy/paste action would be prevented:
const inputEvt = (e) => {
if ((e.ctrlKey || e.metaKey) && (e.keyCode === 91 || e.keyCode === 67)) {
return true;
}
e.preventDefault();
return false;
};
或者,您可以只readonly=true
在input
元素上使用 set 以避免挂钩键:
<input readonly>
推荐阅读
- angular - 如何修复 Typescript 可订阅接口错误?
- php - Apache 不会重定向到 index.php
- amazon-web-services - 您可以在 DynamoDB 事务中执行 DynamoDB 原子计数器更新吗?
- c++ - `iterator` 和 `const_iterator` 不是 STL 容器的必需成员?
- kubernetes - 如何禁止从 Kubernetes 中的 pod ip 访问容器端口
- graphql - GraphQL where 子句接受 Json 对象?
- objective-c - applicationWillTerminate 和 applicationShouldTerminate 不在 macOS 上运行?
- devops - 将 JFrog Artifactory Professional 5.4.5 升级到最新可用的 6.17
- java - 从 JOGL 最新大师解决 NewtCanvasJFX
- hybris - 如何在 Hybris Backoffice 座舱中为不同用户定义多个集合浏览器?