Pregunta

La documentación de jQuery dice que la biblioteca tiene soporte incorporado para los siguientes eventos: difuminar, enfocar, cargar, redimensionar, desplazar, descargar, hacer clic, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, cambiar, seleccionar, enviar, keydown, keypress, keyup, y error.

Necesito manejar, cortar, copiar y pegar eventos. ¿Cómo mejor hacer eso? FWIW, solo necesito preocuparme por WebKit (¡qué suerte tengo!)

ACTUALIZACIÓN: estoy trabajando en un " widget " en un entorno similar a Dashboard. Utiliza WebKit, por lo que solo importa realmente (para mis propósitos) si estos eventos son compatibles allí, lo que parece que son.

¿Fue útil?

Solución

Puede agregar y eliminar eventos de cualquier tipo usando .on () y los métodos off ()

Prueba esto, por ejemplo

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

jQuery en realidad es bastante indiferente a si el navegador admite el tipo de evento que asigna, por lo que puede asignar tipos de eventos arbitrarios a elementos (y objetos generales) como:

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

En el caso de tipos de eventos personalizados, debe .trigger () ellos " manualmente " en tu código, como este:

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

Neat eh?

Además, para trabajar con eventos DOM de propietario / personalizados de forma compatible con todos los navegadores, es posible que deba usar / escribir un " complemento de eventos jQuery " ... ejemplo del cual puede verse en jquery.event. wheel.js complemento de Mousewheel de Brandon Aaron

Otros consejos

Varios eventos del portapapeles están disponibles en Javascript, aunque el soporte es irregular. QuicksMode.org tiene una cuadrícula de compatibilidad y página de prueba . Los eventos no se exponen a través de jQuery, por lo que tendrá que ampliar la biblioteca o usar eventos de JavaScript nativos.

Mozilla admite una entrada " " evento para el que estoy teniendo problemas para encontrar documentación útil para. Como mínimo, sé que se dispara al pegar.

   this.addEventListener('input',
    function(){//stuff here},
    false
   );

Como jQuery 1.7 puede usar los métodos bind (...) y unbind (...) para adjuntar y eliminar los controladores respectivamente.

Aquí hay ejemplos que alinean su búsqueda:

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

: este bloqueará cualquier intento de pegar desde el portapapeles al cuerpo del elemento. También puede utilizar cortar , copiar y otros como tipos de evento (consulte los enlaces a continuación)

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

Por lo tanto, en otros casos, cuando quieras eliminar esos controladores, puedes usar el método unbind () :

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

Aquí algunos enlaces útiles:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top