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

IT技术 javascript jquery event-handling webkit
2021-01-21 00:33:03

jQuery文档说,库有内置支持下列活动:模糊,焦点,负载,调整大小,滚动,卸载,点击,DBLCLICK,鼠标按下,鼠标松开,鼠标移动,鼠标悬停,鼠标移开,了mouseenter,鼠标离开,改变,选择,提交、按键、按键、按键和错误。

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

更新:我正在类似仪表板的环境中处理“小部件”。它使用 WebKit,所以真正重要的是(对我而言)这些事件是否在那里受支持,看起来是这样。

4个回答

您可以使用.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.jsBrandon Aaron 的鼠标滚轮插件

.off 链接没问题,jquery.event.wheel.js 被标记为<del>eted 但由于历史原因留在了。
2021-03-29 00:33:03
断开的链接:offjquery.event.wheel.js
2021-04-12 00:33:03

Javascript 中提供了各种剪贴板事件,但支持参差不齐。QuicksMode.org 有一个兼容性网格测试页面事件不是通过 jQuery 公开的,因此您必须扩展库或使用本机 Javascript 事件。

Mozilla 支持“输入”事件,我无法找到有用的文档。至少,我知道它会在糊状物上燃烧。

   this.addEventListener('input',
    function(){//stuff here},
    false
   );
谢谢,乔希。这似乎适用于 FF 和 IE。 $('#myinput').bind('input', function() { my_immediate_response_function();});
2021-04-03 00:33:03
在 IE 9 中,如果您删除文本(使用键盘或右键单击 | 剪切),则不会触发输入事件。在 Chrome 和 FF 中确实如此。干得好,微软!
2021-04-04 00:33:03
似乎在 FF、IE、Chrome 和 Safari 中运行良好!超级,谢谢。
2021-04-13 00:33:03

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

以下是与您的问题保持一致的示例:

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

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

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

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

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

这里有一些有用的链接: