Привет всем, название темы, наверно, немного непонятное.
Вот что мне нужно, всем известен MS Word, и там если мы выделим текст жирным, то он станет жирным, а если потом в этом тексте выделим подтекст и опять нажмем сделать жирным, то он наоборот уберет жирность с него.
Как добиться того же самого, но с помощью js? Т.е. с помощью range я обрамляю выделенный кусок текста тегами <b> - он становится жирным, потом в этом жирном тексте выделяю еще кусок текста и он должен стать нежирным.
'hi there doc' // начальная строка
'hi <b>there</b> doc' // сделать часть текста жирной
'hi <b>th</b>e<b>re</b> doc' // часть жирного текста сделал нежирной
И ладно если б только в этом была проблема, а то ведь теги могут и пересекаться, например, есть строка
<i>курсив жирный курсив</i> жирный
и если выделить "жирный курсив жирный" и сделать его жирным, то должна получиться строка
<i>курсив </i><b><i>жирный курсив</i> жирный</b>
вот как-то так.
И это ж только простейшие функции, я как представлю сколько всяких вариантов может быть меня аж в дрожь бросает. Но ведь уже столько готовых редакторов, должен же быть алгоритм, по какому принципу с тегами работать? Например, та же комманда execCommand('bold', false, '') адекватно делает жирным и нежирным текст, а что б сделать такое же с range надо весь алгоритм вручную сделать.
Не то что б, я не смогу сделать хотя бы простейшую реализацию, просто не хочется по-новой изобретать велосипед.
Все примеры выше делались (и должны делаться) в iframe с включенным designMode.
Если нет готовых алгоритмов, подскажите как сделать "жирный/нежирный" и пересекающиеся теги.