这取决于它是如何完成的。此外,删除/禁用事件侦听器总是有风险的,您可能会严重损害站点的功能 - 而且您永远不知道处理程序是做坏事还是好事,至少您根本不知道是否有处理程序。
因此,我浏览了“javascript 防止复制粘贴”的前几个 Google 结果,发现大部分是愚蠢的脚本:禁用将文本粘贴到 HTML 表单中,防止复制、剪切和粘贴到 HTML 输入文本字段中,不工作示例。那么脚本现在可以做什么:
- 删除输入元素的所有 on-copy、-paste、-input、-cut、-drag 等属性
- 在文档上捕获这些事件类型并停止它们的传播,因此(气泡)处理程序将永远不会被调用并且不能阻止默认操作
然而,正如已经说过的,这并不能阻碍一切。该解决方案input
巧妙地使用了该事件,以防止一次插入多个字符。因此,您需要决定是否要停止该事件并可能破坏应用程序。
var evts = ["copy", "paste", "cut", "drag", "selectionstart?", "input?", …?];
var els = [document, document.body].concat(
[].slice.call(document.getElementsByTagName("input")),
[].slice.call(document.getElementsByTagName("textarea"))
);
function trap(e) { e.stopPropagation(); }
for (var i=0; i<evts.length; i++) {
var evt = "on"+evts[i].charAt(0).toUpperCase()+evts[i].substr(1);
for (var j=0; j<els.length; j++)
els[j][evt] = null; // remove handler
document.addEventListener(evts[i], trap, true); // capture phase
}