В началото трябва да спомена, че съм 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