Кроссбраузерная вставка strong/em с помощью execCommand

Используя функцию contentEditable и execCommand, можно редактировать/форматировать содержимое определенных частей страницы подобно тому, что используется во всех веб-редакторах WYSIWYG. Однако существует множество несоответствий браузеров с реализацией такой функции, из-за чего такие веб-редакторы обрабатывают их вручную.

В моем случае IE использует элементы strong и em для команд Bold и Italic. хочу, как и я после семантических strong и em, а не визуальных стилей b, i и/или стилизованный span. Однако другие браузеры используют эти элементы визуального стиля и не позволяют установить элементы strong или em.

Есть ли способ сделать возможным использование strong и em во всех браузерах? Я не возражаю против добавления новых команд для обработки такая вещь, пока она достигает приблизительных результатов к IE. Кроме того, было бы приятно иметь возможность применять их к пересекающимся строчным/блочным элементам, не нарушая работу браузеров (или, по крайней мере, нарушая их аналогичным образом). Да, я могу использовать некоторые другие редакторы, но меня интересует только эта функция. Буду признателен за любую помощь.

Спасибо


person cria    schedule 20.11.2010    source источник
comment
Я работаю над решением для этого и опубликую здесь, когда оно будет готово.   -  person Tim Down    schedule 18.12.2010
comment
Крутой Тим. Я не могу дождаться, чтобы увидеть, как вы справитесь с этим. Спасибо чувак.   -  person cria    schedule 28.12.2010
comment
Моя работа над этим остановилась некоторое время назад. Я позволил масштабу ползти, и все это ускользнуло от меня. Я вернусь к этому однажды.   -  person Tim Down    schedule 06.10.2012


Ответы (2)


Я точно знаю, что вы имеете в виду, потому что я только что столкнулся с той же проблемой. Я думаю, что при тщательном поиске здесь что-то помогает (ссылка в StackOverflow):

Использование contentEditable в Firefox: 'жирный' отображается правильно, но код html неверен

Чтобы увидеть это здесь, он говорит, добавляя следующую строку перед execCommand('bold'):

document.execCommand('StyleWithCSS', false, false);

Я попробовал, и он исправил это, вставив в Firefox 13.0.1 (до этого FF вставлял «начертание шрифта: полужирный»). Я очень взволнован сейчас.

person ATC    schedule 02.08.2012

Возможно, я неправильно понимаю, но вы можете установить em и strong на все, что хотите, используя CSS.

strong{ font-weight:bold }
person Rob    schedule 16.12.2010
comment
Да, вы неправильно понимаете: вопрос связан с document.execCommand(), который является методом, обычно используемым в редакторах WYSIWYG для изменения некоторых аспектов контента, выбранного пользователем, например жирности. - person Tim Down; 16.12.2010
comment
Задавая описательный вопрос, я надеялся, что разъясню его другим. К сожалению, у меня не получилось :) - person cria; 28.12.2010