Pregunta

Estoy escribiendo una extensión para nicEdit que hará que todos pegado de texto enriquecido a pegar como texto sin formato.Mi código funciona perfectamente en Chrome y internet explorer 7, pero no en Firefox 3 (y, presumiblemente, Firefox 2, pero por diferentes razones - en particular, la falta de una pasta de eventos).

Lo curioso del caso es que mi código funciona a la perfección cuando el texto que se va a pegar texto sin formato.Parece ahogarse en cualquier formato.Aquí están los pasos involucrados en la versión de Firefox, que son despedidos en pegar (el evento de disparo, pero la pasta se produce un error):

  • Obtener la selección actual y el rango
  • Crear un nuevo div con contentEditable = true, y agregarlo a la DOM
  • Mover el cursor a la nueva div
  • establecer un tiempo de espera para obtener el código HTML de la nueva div, limpia, y lo puso en la selección anterior (que me agarró en el paso 1)
  • return true (lo que permite la pasta original para completar, pegar el contenido en la nueva div)

Parece que todos estos pasos se ejecutan, pero la pasta no ocurre nunca.No tengo errores en la consola (sólo una advertencia relativa a un error de análisis en text-align - la declaración se cae), y nada sospechoso pasa cuando voy a depurar con Firebug (salvo que mi pasta parece vacío, que es el problema).

La advertencia que me hace pensar que Firefox puede ser simplemente no se puede analizar el contenido me han pegado, pero sin mi interceptar código, soy capaz de pegar en el nicEditor bien.

He subido mi Firefox-sólo la secuencia de comandos de prueba en http://www.ryankinal.com/paste/firefox.html - este es el código que Firefox se ejecuta a partir de toda mi extensión.

Un par de cosas a destacar:

  • Me he tomado una buena cantidad de la inspiración de la TinyMCE pegar plugin
  • Estoy usando algunos de jQuery para la selección de un elemento
  • También parece ser la modificación Function.prototype en nicEdit, lo que me parece extraño
  • Yo podría utilizar otro Editor de Texto Enriquecido, pero considere esto un ejercicio de depuración
  • El código enlazado más arriba es SÓLO PARA FIREFOX
¿Fue útil?

Solución

El problema es que el evento pasta es simplemente demasiado tarde para redirigir el símbolo de intercalación en algunos navegadores, incluyendo Firefox. Usted será capaz de hacer el truco de intercalación-redirección si le atajos de teclado para pegar intercepción ( Ctrl + V , cmd + V y Mayúsculas + Insertar ) e ignorar el evento paste, pero esto significa pastas provocados por los menús de contexto y editar no están cubiertos. Creo sin embargo, esto es lo mejor que puede hacer,.

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