Я работаю над редактором WYSIWYG Javascript в Firefox. Я использую div с атрибутом contenteditable, установленным в true, чтобы выполнить это (я не могу использовать contenteditable iframe для этого конкретного проекта). Этот contenteditable div вложен в другой div, который недопустим. Я встречая следующие две проблемы при использовании ExecCommand применить форматирование, включая тип и размер шрифта, а также жирный, курсив и подчеркивание:Проблемы с contenteditable в Firefox
- Когда весь текст в DIV выбран, ExecCommand просто не работает , execCommand отлично работает, когда выбрана только часть текста, но ничего не делает, когда весь текст выбран.
- Применение форматирования без выбора текста дает неожиданные результаты. Например, при вызове execCommand («полужирный») без выделенного текста, а затем при наборе текста выводится полужирный текст до ввода пробела, после чего полужирное форматирование теряется (до тех пор, пока не будет вставлено другое пространство, что интересно, текст снова становится полужирным шрифтом).
Чтобы увидеть, что я имею в виду, пожалуйста, попробуйте запустить следующий HTML-код в Firefox 3:
<html>
<head><title></title></head>
<body>
<button onClick="execCommand('bold', false, null);">Bold</button>
<div style="width: 300px; border: 1px solid #000000;">
<div contenteditable="true">Some editable text</div>
</div>
</body>
</html>
Пожалуйста, попробуйте следующее:
- Выберите слово "Некоторые" только. Нажмите кнопку Полужирный. Это сделает текст полужирным, как и ожидалось.
- Выделить всю фразу "Some editable text" (вручную или используя CTRL-A). Нажмите кнопку Полужирный. Ничего не произошло. Это демонстрирует первую ошибку, показанную выше.
- Нажмите клавишу возврата, чтобы очистить div. Нажмите кнопку «Полужирный» и начните вводить текст. Введите несколько слов с пробелами. Это покажет вторую ошибку.
Любые идеи о том, что может вызвать эти проблемы и как их обойти, будут очень признательны!
Одна вещь, которую я забыл отметить - вышеупомянутые проблемы есть только в Firefox; У Safari и IE, похоже, нет этих проблем. – Jonathan