4

某些表单验证器会在某些输入字段上阻止CTRL+ C/ CTRL+ 。V是否有快速书签或可以让我正确使用键盘的东西。或者,也许浏览器允许我覆盖某些页面的那种粗鲁行为?

编辑:我正在寻找的是类似的解决方案,例如可用于通过在页面上下文中执行 javascript 片段来启用右键单击页面的解决方案:

javascript:void(document.oncontextmenu=null) 

到目前为止,我认为没有与 javascript 片段类似的解决方案,而不涉及像 Greasemonkey 这样的 3rd 方工具

4

2 回答 2

2

这取决于它是如何完成的。此外,删除/禁用事件侦听器总是有风险的,您可能会严重损害站点的功能 - 而且您永远不知道处理程序是做坏事还是好事,至少您根本不知道是否有处理程序。

因此,我浏览了“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
}
于 2012-11-08T23:55:00.073 回答
0

Windows 上的另一个解决方案:AutoHotkey

SendRaw, %Clipboard%

例如,以下绑定到 ctrl+F3 以键入剪贴板内容。只需将它放在一个名为的文件中typeclipboard.ahk并使用 AutoHotkey 运行它:

^F3::SendRaw, %Clipboard%
于 2022-01-14T22:54:40.690 回答