ACTUALIZACIÓN:
Todos los navegadores más importantes ahora le permiten acceder a los datos del portapapeles en un evento paste. Consulte Nico Burns's answer para ver un ejemplo en el navegador más nuevo y también consulte Tim Down's answer si necesita admitir navegadores más antiguos.
Puede detectar el evento onPaste en el div para detectar la pasta. Si solo desea deshabilitar el pegado, puede llamar al event.preventDefault()
desde ese oyente.
Para capturar el contenido pegado, sin embargo, es un poco más difícil ya que el evento onPaste
no le da acceso al contenido pegado. La forma habitual de manejar esto es para hacer lo siguiente desde el controlador onPaste
evento:
- crear un div maniquí y colocarlo fuera de los límites de la ventana así que no es visible para los visitantes
- mover el foco a este div
- llamada de un método usando un desinfectante
setTimeout(sanitize, 0)
y de su método de desinfección:
- encontrar el div maniquí y obtener su contenido
- desinfectar el HTML y quitar el div
- mover el foco de nuevo a la div originales
- insertar el contenido desinfectados en el div originales
¿Cuál sería útil sería un fondo que captura el evento pegar antes de que ocurra, desinfecta y luego inyecta el contenido seguro en el contenido editable sin perder la posición del cursor. Ideas? –
IE, Safari y Chrome permiten acceder a los datos en el portapapeles, pero tendrás que inventar un gran dolor de cabeza para solucionar Firefox. Mucho más fácil, si es factible, sería simplemente permitir el pegado, y luego desinfectar el contenido del elemento completo después del hecho. Funcionaría eso? – sdleihssirhc
Hay una forma chistosa de hacer esto que he publicado antes: http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event-cross-browser/2177059#2177059, http : //stackoverflow.com/questions/4365833/how-can-i-get-the-text-that-is-going-to-be-pasted-in-my-html-text-editor/4365862#4365862 –