Текстови редактори с възможност за редактиране на съдържание

Изпробвах няколко HTML редактора, включително TinyMCE, CKEditor и сега NicEdit. NicEdit е добър в едно отношение - много е лесен за персонализиране. Въпреки това открих, че всички те имат тенденция да произвеждат много лош HTML. Не е задължително, но защото те не правят много, за да интерпретират правилно невалидните потребителски действия, като например опит за стилизиране на нещо, без първо да са направили избор.

Твърде лесно е да се стигне до HTML, който съдържа нещо подобно

<span style='color:#ff0000'><span style='color:#ff0000'><span style='color:#ff0000'>Red</span></span></span>

Прав ли съм, като си мисля, че това е до голяма степен ограничение на концепцията за редактиране на съдържание? Лошият HTML няма голямо значение, ако целта е имейл или публикации във форуми като този, но става доста неудобно за живеене, ако генерираният HTML трябва да се използва в контекста на уеб страница. Ако всичко това е правилно, какви са алтернативите? Може би базиран на Flash редактор на плъгини, който произвежда по-добър HTML и работи по-усилено при интерпретирането на това, което потребителят иска да направи?

Предполагам, че по принцип би било възможно да се проучи генерираният изход и да се изчисти всичко между концертинираните участъци, ако е необходимо, но това вероятно ще бъде доста голямо начинание.


person DroidOS    schedule 18.04.2013    source източник
comment
Да, това е и моят опит. Най-накрая се примирих с CodeMirror, както и с източника за редактиране. Странична бележка: помощната програма Markdown на Python изглежда публикува солиден HTML5 -- все още не съм забелязал проблеми.   -  person Aaron Meier    schedule 18.04.2013
comment
CodeMirror изглежда добре, но изглежда, че е редактор за програмисти. Това, което търся, е надежден начин за типове уеб дизайнери да създават богато съдържание на страници - дори и да не знаят HTML.   -  person DroidOS    schedule 18.04.2013
comment
Да, разбирам загрижеността ви. Много е жалко колко лошо се представят WYSIWYG уеб редакторите. Почти винаги трябва ръчно да почиствам източника след редактиране. Надявам се, че някой има отговор за вас - би било чудесно да го имате.   -  person Aaron Meier    schedule 18.04.2013


Отговори (2)


В началото трябва да спомена, че съм CKEditor core developer, така че мнението ми може да не е напълно обективно :).

Състоянието на редактирането на HTML AFAIK не се е променило през последните няколко години. Доставчиците на браузъри са отделили малко време за коригиране на грешки - толкова малко, че повечето от най-старите грешки в CKEditor trac, причинени от браузър проблемите все още са валидни и повечето хакове, които някога сме създавали, все още са необходими. И нямам предвид само IE 7 или 8, които все още поддържаме, защото всъщност IE може да не са най-лошите. Не съм проверил това точно, но мисля, че благодарение на общите подобрения за DOM API в последните версии на IE, те може да изискват по-малко хакове от други браузъри, тъй като поддръжката им за редактиране изглежда най-стабилна и пълна. напр. най-грозният хак е необходим за браузърите Webkit (вижте: Проблем в Webkit и затворен билет за CKEditor) и този бъг е на 5 години. Нещо повече - това не е краен случай или малко вероятен сценарий - този проблем прави невъзможно създаването на цял набор от селекции - напр. вътре в празен вграден елемент IIRC.

Така че, за разлика от уеб технологиите като цяло, редактирането на HTML стои там, където беше оставено преди 10 години. Същите грешки, същите липсващи функции, същото... маркиране. Познайте какво се създава от командата fontName? <font face=""> - да, не се шегувам. Тук поне браузърите са много последователни... Но последователността много бързо изчезва.

Какво ще кажете за спецификацията? Има чернова, но тя изобщо не помага - просто стандартизира текущото състояние, което както знаем не изглежда много добре. И AFAICS, черновата е мъртва.

И още нещо ме притеснява - посоката, в която върви редакцията. Google използва contenteditable в Gmail (не, Google Документи не е изграден върху contenteditable), така че не се интересува от HTML изхода. Apple използва повторно компонент за редактиране на HTML в приложението за електронна поща за iOS и може би в Mail за MacOS (защото виждам същото специфично поведение). Mozilla използва повторно Gecko в Thunderbird и не бих се изненадал, ако Microsoft направи същото в Outlook. Всички те не се интересуват от HTML изхода. Тези машини са направени да разбират всяка глупост, вместо да я поправят, а черновата за редактиране на HTML е всичко за това.

Благодарение на всичко това можем да видим нови проблеми като този . В доклада за грешка на Blink/Webkit обобщих цял набор от неправилни (от нашия POV - разработчици, които се интересуват от HTML) резултати при натискане на backspace. Той е проектиран да изглежда добре (въпреки че не е), но HTML и API за редактиране не са важни.

Не ме интересува това. Трябва ми редактор!

Решението за всичко това е да коригираме всичко след браузърите и/или да заменим техните собствени реализации с наши собствени. През последните 1,5 години работя почти изключително върху филтриране и нормализиране на входа и изхода. В CKEditor 4.0 пренаписахме целия процес на поставяне и вмъкване на HTML, а в наскоро пуснатия CKEditor 4.1 въведохме Разширено съдържание Филтър, който адаптира входните данни към конфигурацията на редактора. Така че колкото по-малко функции са активирани, толкова по-малко ще бъдат разрешени в HTML. Вижте този пример - опитайте да поставите /напишете/създайте скапан HTML.

Разбира се, все още има място за подобрения. напр. не можем да филтрираме данните веднага по време на редактиране. Ако браузър (като Webkit) създаде бъркотия, можем да поправим това при изхода, но всъщност не сме решили да го направим, защото филтрирането е наистина сложен процес и може да развали производителността. Ние ограничаваме въвеждането и действията на потребителите, така че един ден ще внедрим наши собствени манипулатори за обратно пространство/изтриване, за да попречим на браузърите да объркват нашия HTML. Това е единственото решение и затова има само 2 или 3 добри WYSIWYG редактора.

Както и да е, почти нищо не се е променило в приложенията за редактиране на HTML в браузърите, но много се е променило в света на WYSIWYG редакторите. Съветвам ви да ги проверите отново, ако се основавате на опита си от преди няколко години.

person Reinmar    schedule 18.04.2013
comment
Благодаря ти, Рейнмар. Вашият отговор печели гласа ми и се приема - ако не друго, поне заради това колко изчерпателен е. Преминах от TinyMCE към CKEditor, който беше по-добър и накрая към NicEdit. Последният превключвател беше продиктуван от две причини - трябваше да имам размери на шрифта, посочени като em (под)множества и също трябваше да попълня комбинацията за избор на шрифт с променлива селекция от уеб шрифтове - и двете успях да направя с относителна лекота в NicEdit. Опитах се да направя същото с CKEditor, но открих, че кривата на обучение е твърде стръмна за наличното време. - person DroidOS; 18.04.2013

След като прекарах много време в опити да намеря начини да получа HTML от производствен клас от WYSIWYG редактор, реших, че трябва да споделя резултатите си тук в полза на всеки, който се натъкне на тази тема.

Много кратка препоръка - спрете да си губите времето. Редакторите на съдържание, които могат да се редактират, никога няма да предоставят нещо, дори малко близко до производствения HTML. Хора като Reinmar са свършили много работа, за да сведат до минимум това, но е твърде лесно за потребителя да хвърли основния код на браузъра, който обработва съдържание, което може да се редактира, в шут.

По-добре е да използвате BBCode маркиране. 100% бронираната опция е да накарате потребителя да редактира BBCode и да следи стриктно какво му е позволено да прави по всяко време. Направих това в собствения си проект, но проблемът с карането на потребители, които не са технически специалисти, да играят с маркиране на каквото и да е описание, е труден. Поставянето на ваш собствен WYSIWYG интерфейс за редактиране на BBCode е работа, която не трябва да се предприема леко. За щастие помощта е под формата на SCEditor. Сам свърши изключителна работа тук. Имайте предвид - това, което излиза, все още може да съдържа няколко "сухи" бита, тъй като битът WYSIWYG все още разчита на съдържание, което може да се редактира. Въпреки това е относително лесен за почистване.

person DroidOS    schedule 11.12.2013