daesher писал(а):Можете посмотреть мой древний, древний проект
Посмотрел. Как бы спасибо, конечно, но я ограничен во времени разработки (осталось чуть больше 2 месяцев), поэтому предпочту допилить решение с уже готовой отрисовкой (htmlport), добавив к нему функции редактирования.
Тем временем возник новый вопрос, вернее даже не вопрос - просто не могу определиться. Внимательно отнесусь к предложениям (советам).
Дело в следующем.
При удалении текста (backspace или delete) рано или поздно курсор (каретка) подходит к концу (или началу абзаца).
В такой ситуации мой редактор поступает следующим образом:
backspace (каретка подошла к началу абзаца): удаляется тег начала текущего абзаца и завершающий тег предыдущего абзаца, оба абзаца объединяются.
delete (каретка подошла к закрывающему тегу абзаца): удаляется завершающий тег текущего абзаца и начальный тег следующего. Абзацы тоже объединяются.
Здесь все ясно - описание дал для общего понимания ситуации.
Но в какой-то момент случается, что каретка подошла не к тегу абзаца, а, например, к <div> или <span> или еще к какому-нибудь... Например:
- Код: Выделить всё
<p>Текст абзаца 1</p><div>Текст div</div> <p>[здесь находится каретка] текст абзаца 2</p>
Как, вы считаете, должен повести себя редактор в такой ситуации при нажатии
backspace?
- объединить текст абзаца 2 с текстом в div и поместить объединенный текст в div?
- Код: Выделить всё
<p>Текст абзаца 1</p><div>Текст div[здесь находится каретка] текст абзаца 2</div>
- то же самое, но включить объединенный текст в абзац 2 (div удалить)?
- Код: Выделить всё
<p>Текст абзаца 1</p><p>Текст div[здесь находится каретка]текст абзаца 2</p>
- оставить блоки как есть и удалить последний символ в div?
- Код: Выделить всё
<p>Текст абзаца 1</p><div>Текст di[здесь находится каретка]</div> <p> текст абзаца 2</p>
- объединить абзац 1 и абзац 2 в абзац 1, а div оставить внутри абзаца 1?
- Код: Выделить всё
<p>Текст абзаца 1 [здесь находится каретка]<div>Текст div </div> текст абзаца 2</p>
Второй день не могу разобраться, какой вариант предпочтительный (правильный).
Как вообще
должен себя вести редактор при нажатии
backspace или
delete на границе разных тегов html?
Добавлено спустя 19 минут 24 секунды:P.S. Примеры.
Что должен сделать редактор при нажатии
backspace в следующих ситуациях (полодение каретки отмечено ▌)
- Код: Выделить всё
<span name="s1">
<p name="p1">абзац 1</p>
</span>
<span name="s1">
<p name="p2">▌Абзац 2</p>
</span>
- Код: Выделить всё
<span name="s1">
<p name="p1">абзац 1</p>
</span>
<p name="p2"><span name="s1">Текст</span>▌Абзац 2</p>
- Код: Выделить всё
<div name="s1">
<p name="p1">абзац 1</p>
</div>
<div name="s1">
<p name="p2">▌Абзац 2</p>
</div>
- Код: Выделить всё
<p name="p1">абзац 1</p>
<div name="s1">Текст</div>
<div name="s1">
<p name="p2">▌Абзац 2</p>
</div>
Может, есть какие-то правила на такой случай?
Заранее спасибо.