如何在 jQuery 中处理 oncut、oncopy 和 onpaste?
-
04-07-2019 - |
题
这 jQuery 文档 说该库内置了对以下事件的支持:模糊、焦点、加载、调整大小、滚动、卸载、单击、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、更改、选择、提交、keydown、keypress、keyup 和错误。
我需要处理剪切、复制和粘贴事件。如何最好地做到这一点?FWIW,我只需要担心 WebKit(我很幸运!)。
更新:我正在类似仪表板的环境中开发“小部件”。它使用 WebKit,因此(对于我的目的而言)真正重要的是这些事件是否受支持(看起来确实如此)。
解决方案
您可以使用 .on()
添加和删除任何类型的事件和 off()
方法
试试这个,例如
jQuery(document).on('paste', function(e){ alert('pasting!') });
jQuery实际上对浏览器是否支持您指定的事件类型无动于衷,因此您可以将任意事件类型分配给元素(和常规对象),例如:
jQuery('p').on('foobar2000', function(e){ alert(e.type); });
如果是自定义事件类型,您必须 .trigger()
他们“手动”地在你的代码中,像这样:
jQuery('p').trigger('foobar2000');
整洁呃?
此外,要以跨浏览器兼容的方式使用专有/自定义DOM事件,您可能需要使用/编写“jQuery事件插件”。 ...其中的示例可以在 jquery.event中看到。 wheel.js Brandon Aaron的 Mousewheel插件
其他提示
Mozilla支持“输入”。我找不到有用文档的事件。至少,我知道它会粘贴。
this.addEventListener('input',
function(){//stuff here},
false
);
作为 jQuery 1.7 你可以使用 绑定(...) 和 解除绑定(...) 分别附加和删除处理程序的方法。
以下是与您的问题相符的示例:
$('#someElementId').bind('paste', function(){return false;});
- 这将阻止任何从剪贴板粘贴到元素主体的尝试。您还可以使用 切, 复制 以及其他事件类型(请参阅下面的链接)
$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');});
因此,在其他情况下,当您想删除这些处理程序时,可以使用 解除绑定() 方法:
$('#someElementId').unbind('copy');
这里有一些有用的链接: