代码之家  ›  专栏  ›  技术社区  ›  Andrew Hedges

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

  •  65
  • Andrew Hedges  · 技术社区  · 16 年前

    这个 jQuery documentation 表示该库内置了对以下事件的支持:模糊、聚焦、加载、调整大小、滚动、卸载、单击、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleft、更改、选择、提交、向下键、按键、向上键和错误。

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

    更新:我正在一个类似仪表板的环境中开发一个“小部件”。它使用WebKit,所以(就我的目的而言)这些事件是否受支持才是真正重要的,看起来是这样的。

    4 回复  |  直到 16 年前
        1
  •  89
  •   Már Örlygsson    11 年前

    您可以使用添加和删除任何类型的事件 .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 布兰登·艾伦的 Mousewheel plugin

        2
  •  14
  •   dansays    16 年前

    Javascript中提供了各种剪贴板事件,但支持程度参差不齐。QuicksMode.org有一个 compatibility grid test page 。这些事件不是通过jQuery公开的,因此您必须扩展库或使用本机Javascript事件。

        3
  •  7
  •   Josh Bush    16 年前

    Mozilla支持“输入”事件,我很难找到有用的文档。至少,我知道它在浆糊上会着火。

       this.addEventListener('input',
        function(){//stuff here},
        false
       );
    
        4
  •  1
  •   Yan Pak    9 年前

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

    这里有一些有用的链接: