Pergunta

Estou escrevendo uma extensão para Nedit o que fará com que todos os textos ricos colados sejam colados como texto simples. Meu código funciona perfeitamente no Chrome e IE7, mas falha no Firefox 3 (e, presumivelmente, Firefox 2, mas por diferentes razões - principalmente, a falta de um evento de pasta).

A parte ímpar é que meu código funciona perfeitamente quando o texto colado é um texto simples. Parece sufocar qualquer formatação. Aqui estão as etapas envolvidas na versão do Firefox, que são disparadas na pasta (o evento está disparando, mas a pasta falha):

  • Obtenha a seleção atual e alcance
  • Crie uma nova div com contentEditable = true, e adicione ao DOM
  • Mova o cuidador para o novo div
  • Defina um tempo limite para obter o HTML da nova div, limpá -lo e coloque -o na seleção antiga (que eu peguei na etapa 1)
  • Retorne true (permitindo que a pasta original seja concluída, colando conteúdo para o novo div)

Parece que todas essas etapas são executadas, mas a pasta nunca acontece. Não recebo erros no console (apenas um aviso relacionado a um erro de análise text-align - A declaração é descartada), e nada desconfiado acontece quando depuro com o Firebug (exceto que minha pasta parece vazia, que é o problema).

O aviso me faz pensar que o Firefox pode não conseguir analisar o conteúdo que eu coloquei, mas sem meu código de interceptação, sou capaz de colar muito bem o Niceditor.

Eu carreguei meu script de teste somente Firefox em http://www.ryankinal.com/paste/firefox.html - Este é o código que o Firefox executa da minha extensão completa.

Algumas coisas a serem observadas:

  • Eu tomei uma quantidade razoável de inspiração do plugin de pasta de tinymce
  • Estou usando algum jQuery para seleção de elementos
  • Também parece haver alguma modificação para Function.prototype em Nicedit, que eu acho estranho
  • Eu poderia usar outro editor de texto rico, mas considere isso um exercício de depuração
  • O código vinculado acima é destinado apenas ao Firefox
Foi útil?

Solução

O problema é que o evento de pasta é simplesmente tarde demais para redirecionar o cuidador em alguns navegadores, incluindo o Firefox. Você poderá fazer o truque de redirecionamento se você interceptar os atalhos do teclado para colar (Ctrl+V, Cmd+V e Mudança+Inserir) e ignore o evento de pasta, mas isso significa que as pastas desencadeadas pelo contexto e os menus de edição não são cobertas. Eu acho que este é o melhor que você pode fazer, no entanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top