如何在 JavaScript 中检测复制和粘贴
how to detect copy and paste in javascript?
我有两个字段,一个是emailid
,另一个是在我的表单中password
的。我想阻止用户粘贴到这些字段中。他们应该被迫手动输入,就像谷歌表单一样。
您也可以禁用ctrl+v
组合和right click
。
对于 IE,您可以利用以下事件处理程序:
onpaste="return false;"
oncut="return false;"
oncontextmenu="return false;"
oncopy="return false;".
以下是适用于所有浏览器的解决方法:
function noCTRL(e) {
var code = (document.all) ? event.keyCode : e.which;
var ctrl = (document.all) ? event.ctrlKey : e.modifiers & Event.CONTROL_MASK;
var msg = "Sorry, this functionality is disabled.";
if (document.all) {
if (ctrl && code == 86) {
//CTRL+V
alert(msg);
window.event.returnValue = false;
} else if (ctrl && code == 67) {
//CTRL+C (Copy)
alert(msg);
window.event.returnValue = false;
}
} else {
if (ctrl == 2) {
//CTRL key
alert(msg);
return false;
}
}
}
在 HTML 部分中,您的字段将如下所示:
Email :<input name="email" type="text" value=""/><br/>
Password :<input name="password" type="password" value=""/><br/>
Confirm Email :<input name="email" type="text" value="" onkeydown="return noCTRL(event)"/>
Confirm Password :<input name="password" type="password" value="" onkeydown="return noCTRL(event)"/>
我认为如果输入类型为password
,用户无法复制密码字段
希望这有帮助。
注意:
- 在浏览器中禁用JavaScript将允许用户做任何他们想做的事情
- 始终牢记这一点:尊重用户的自由。
> 2020 年更新
您可以使用copy
和paste
事件来阻止这些操作,或者修改要复制或粘贴的数据。(请参阅浏览器支持的链接)
<input type="text" onpaste="return false">
或者更长的javascript版本:
const elem = document.getElementById('nopaste');
elem.addEventListener('paste', (event) => {
event.preventDefault();
});
<input type="text" placeholder="can paste"><br>
<input type="text" id="nopaste" placeholder="can not paste">
你应该使用粘贴。当用户尝试粘贴文本时,将触发粘贴事件。
.HTML
<h3>Play with this text area:</h3>
<textarea id="editor" rows="3">Try copying and pasting text into this field!</textarea>
<h3>Log:</h3>
<p id="log"></p>
JavaScript
function logCopy(event) {
log.innerText = 'Copied!'n' + log.innerText;
}
function logPaste(event) {
log.innerText = 'Pasted!'n' + log.innerText;
}
const editor = document.getElementById('editor');
const log = document.getElementById('log');
editor.oncopy = logCopy;
editor.onpaste = logPaste;
复制
document.addEventListener("copy", (e) => {
console.log("copy")
});
糊
document.addEventListener("paste", (e) => {
console.log("paste")
});
> 2022 年更新:
对于在粘贴操作上接收 onChange 事件的输入元素,请提及 onpaste 选项,如下所示
<input onpaste='return true' onChange={handleChange}/>
相关文章:
- 使用Clipboard.js复制span文本
- ZeroClipboard-在复制之前添加到值
- 如何检测是否有溢出
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何检测用于WebGL的专用或集成显卡
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- 如何使用密码检测网络中的状态连接
- 复制图像路径以单击它
- 使用JavaScript检测Flash
- 在不阻止默认行为的情况下检测IE10中的缩放
- 检测个位数整数时正在转换毫秒
- 如何在使用之前检测复制到剪贴板的功能
- 如何在 JavaScript 中检测复制和粘贴
- 任何检测用户何时高亮显示或复制全部/部分URL的方法
- 我怎样才能检测到“;复制图像”;浏览器事件
- 如何使用Angularjs检测文本区域中的复制和剪切事件?
- JavaScript 检测哈希选择/复制
- 实现复制和粘贴代码/文本检测
- 使用jquery检测从网页复制的内容