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

jQuery文档说库对下列事件有内置支持:模糊,焦点,加载,resize,滚动,卸载,点击,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,提交,keydown,按键,键入和错误。

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

更新:我在一个类似于仪表板的环境中工作。 它使用WebKit,所以它只是真的很重要(为我的目的)是否支持这些事件,看起来像它们。

您可以使用.on()off()方法添加和删除任何types的事件

试试这个,例如

 jQuery(document).on('paste', function(e){ alert('pasting!') }); 

jQuery实际上对浏览器是否支持你分配的事件types并不在意,所以你可以为元素(和一般对象)指定任意的事件types,例如:

 jQuery('p').on('foobar2000', function(e){ alert(e.type); }); 

在自定义事件types的情况下,您必须在代码中“手动” .trigger()它们,如下所示:

 jQuery('p').trigger('foobar2000'); 

整洁吗?

此外,要以跨浏览器兼容的方式处理专有/自定义DOM事件,您可能需要使用/编写一个“jQuery事件插件”…例如,可以看到 jquery.event.wheel.js 布兰登·亚伦的Mousewheel插件

Javascript中有各种各样的剪贴板事件可用,但是支持不多。 QuicksMode.org有一个兼容性网格和testing页面 。 这些事件不是通过jQuery公开的,所以你必须扩展库或者使用本地的Javascript事件。

Mozilla支持“input”事件,我很难find有用的文档。 至less,我知道它会烧糊糊。

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

作为jQuery 1.7,您可以使用bind(…)unbind(…)方法来分别附加和删除处理程序。

这里有一些例子可以alignment你的questuion:

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

– 这个将阻止任何尝试从剪贴板粘贴到元素主体。 您也可以使用剪切复制等作为事件types(请参阅下面的链接)

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

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

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

这里有一些有用的链接

  • 绑定()
  • 取消绑定()
  • 完整的事件types列表