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

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

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

    这个 jQuery documentation 表示库内置支持以下事件:模糊、聚焦、加载、调整大小、滚动、卸载、单击、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup和error。

    我需要处理剪切、复制和粘贴事件。怎么做最好?fwiw,我只需要担心webkit(幸运的我!).

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

    4 回复  |  直到 9 年前
        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 Brandon Aaron Mousewheel plugin

        2
  •  14
  •   dansays    16 年前

    各种剪贴板事件在JavaScript中可用,但支持不尽相同。quickmode.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');
    

    以下是一些有用的链接: