Я пишу расширение для nicEdit , которое приведет к тому, что весь вставленный форматированный текст будет вставлен как обычный текст. Мой код отлично работает в Chrome и IE7, но не работает в Firefox 3 (и, по-видимому, Firefox 2, но по разным причинам, в частности, из-за отсутствия события вставки).
Странная часть в том, что мой код отлично работает, когда вставляемый текст - простой текст. Кажется, задыхается от любого форматирования. Вот шаги, включенные в версию Firefox, которые запускаются при вставке (событие запускается, но вставка не выполняется):
- Получить текущий выбор и диапазон
- Создайте новый div с
contentEditable = true
и добавьте его в DOM
- Переместить каретку в новый div
- установить таймаут, чтобы получить HTML из нового div, очистить его и поместить в старое выделение (которое я получил на шаге 1)
- вернуть true (разрешение завершить оригинальную вставку, вставить содержимое в новый div)
Кажется, что все эти шаги выполнены, но вставка никогда не происходит. Я не получаю ошибок в консоли (только предупреждение, относящееся к ошибке разбора на text-align
- объявление отбрасывается), и ничего не подозрительного не происходит, когда я отлаживаю с Firebug (за исключением того, что моя вставка кажется пустой, что является проблемой).
Предупреждение заставляет меня думать, что Firefox может просто не разобрать содержимое, которое я вставил, но без моего кода перехвата я могу просто вставить в nicEditor.
Я загрузил свой тестовый скрипт только для Firefox в http://www.ryankinal.com/paste/firefox.html - это код, который Firefox выполняет из моего полного расширения.
Несколько замечаний:
- Я черпал вдохновение из плагина TinyMCE paste
- Я использую jQuery для выбора элемента
- Там также, кажется, есть некоторая модификация
Function.prototype
в nicEdit, которую я нахожу странным
- Я мог бы использовать другой Rich Text Editor, но считаю это упражнением в отладке
- Код, указанный выше, предназначен ТОЛЬКО ДЛЯ ПОЖАРОФОКСА