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

2022-01-15 00:00:00 webkit event-handling jquery javascript

jQuery 文档 说该库内置了对以下事件的支持:模糊、聚焦、加载、调整大小、滚动、卸载、单击、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、更改、选择、提交、keydown、keypress、keyup 和错误.

The jQuery documentation says the library has built-in support for the following events: blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, and error.

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

I need to handle cut, copy, and paste events. How best to do that? FWIW, I only need to worry about WebKit (lucky me!).

更新:我正在类似仪表板的环境中开发小部件".它使用 WebKit,因此(就我的目的而言)这些事件是否在那里受支持才是真正重要的,看起来确实如此.

UPDATE: I'm working on a "widget" in a Dashboard-like environment. It uses WebKit, so it only really matters (for my purposes) whether these events are supported there, which it looks like they are.

推荐答案

您可以使用 .on()off()方法

You can add and remove events of any kind by using the .on() and off() methods

试试这个,例如

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

jQuery其实对于你分配的事件类型是否被浏览器支持是相当无所谓的,所以你可以给元素(和通用对象)分配任意事件类型比如:

jQuery is actually quite indifferent to whether the event type you assign is supported by the browser, so you can assign arbitrary event types to elements (and general objects) such as:

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

如果是自定义事件类型,您必须.trigger()它们在您的代码中手动",如下所示:

In case of custom event types, you must .trigger() them "manually" in your code, like this:

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

不错吧?

此外,要以跨浏览器兼容的方式处理专有/自定义 DOM 事件,您可能需要使用/编写一个jQuery 事件插件" ...示例可以在 jquery.event.wheel.js Brandon Aaron 的 鼠标滚轮插件

Furthermore, to work with proprietary/custom DOM events in a cross-browser compatible way, you may need to use/write an "jQuery event plugin" ... example of which may be seen in jquery.event.wheel.js Brandon Aaron's Mousewheel plugin

相关文章