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插件

其他提示

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

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');

这里有一些有用的链接:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top