你如何在jQuery中处理oncut,oncopy和onpaste?

时间:2008-10-26 00:21:09

标签: javascript jquery event-handling webkit

jQuery documentation表示该库内置了对以下事件的支持:模糊,聚焦,加载,调整大小,滚动,卸载,单击,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter, mouseleave,change,select,submit,keydown,keypress,keyup和error。

我需要处理剪切,复制和粘贴事件。怎么做到最好? FWIW,我只需要担心WebKit(幸运的是我!)。

更新:我正在类似仪表板的环境中处理“小部件”。它使用WebKit,所以它(这是为了我的目的)是否真的很重要,这些事件是否得到支持,看起来就像它们一样。

4 个答案:

答案 0 :(得分:90)

您可以使用.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事件插件”...其示例可以在 {{3中看到布兰登·亚伦的jquery.event.wheel.js

答案 1 :(得分:14)

Javascript中提供了各种剪贴板事件,但支持很多。 QuicksMode.org有compatibility gridtest page。事件不是通过jQuery公开的,因此您必须扩展库或使用本机Javascript事件。

答案 2 :(得分:7)

Mozilla支持“输入”事件,我无法找到有用的文档。至少,我知道它会粘贴。

   this.addEventListener('input',
    function(){//stuff here},
    false
   );

答案 3 :(得分:1)

作为jQuery 1.7,您可以使用 bind(...)取消绑定(...)方法来附加和删除处理程序。

以下示例对齐您的任务:

$('#someElementId').bind('paste', function(){return false;});

- 这个会阻止任何从剪贴板粘贴到元素主体的尝试。您还可以使用剪切复制和其他人作为事件类型(请参阅下面的链接)

$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');});

因此,在其他情况下,当您想要删除这些处理程序时,可以使用 unbind()方法:

$('#someElementId').unbind('copy');

这里有一些有用的链接: