SlideShare a Scribd company logo
1 of 54
Как сделать текстовый онлайн-редактор
        и испортить себе жизнь
            Аксёнов Василий
               artyv@kontur.ru
                   @outring
Договор № 1

Рабинович Мойша Йосифович именуемый в дальнейшем
"Заказчик", в лице Рабиновича Мойши Йосифовича, действующего
на основании Устава, с одной стороны, и Шариков Полиграф
Полиграфович, именуемый в дальнейшем "Исполнитель", в лице
Шарикова Полиграфа Полиграфовича, действующего на основании
свидетельства о государственной регистрации 12 от 05.09.2008, с
другой стороны, именуемые в дальнейшем Стороны, заключили
настоящий Договор о нижеследующем…
Договор № 1

Рабинович Мойша Йосифович именуемый в дальнейшем
"Заказчик", в лице Рабиновича Мойши Йосифовича, действующего
на основании Устава, с одной стороны, и Шариков Полиграф
Полиграфович, именуемый в дальнейшем "Исполнитель", в лице
Шарикова Полиграфа Полиграфовича, действующего на основании
свидетельства о государственной регистрации 12 от 05.09.2008, с
другой стороны, именуемые в дальнейшем Стороны, заключили
настоящий Договор о нижеследующем…
Редактор в браузере?
      DesignMode                    ContentEditable

document.designMode = 'on'      <div contenteditable="true">
                                    Editable content here
                                            </div>



IE 5.5, Chrome 4, Safari 3.1,     IE 5.5, Chrome 4, Safari
     Opera 9, Firefox 2           3.1, Opera 9, Firefox 3.5
Проблемы?
Генерируемый код
         Mozilla Firefox               Internet Explorer

<span style="font-weight:         <STRONG>Жирный текст
bold;">Жирный текст</span>        </STRONG>

<span style="font-weight:         <STRONG><EM><U>Жирный,
bold; font-style: italic; text-   подчёркнутый и курсив!
decoration: underline;">          </U></EM></STRONG>
Жирный, подчёркнутый и
курсив!</span>
Универсально — хорошо

  Неуниверсально — плохо

          Капитан О.
Популярные редакторы
    TinyMCE             CKEditor

  Всем нравится      Всем нравится
  Вроде работает     Вроде работает
Есть документация   Нет документации




                      FAIL
Drag & Drop
Пользователю нужен фидбек
Ищем границы слов
Рабинович Мойша Йосифович именуемый в
дальнейшем "Заказчик", в лице Рабиновича
Мойши Йосифовича, действующего на
основании Устава, с одной стороны, и Шариков
Полиграф Полиграфович, именуемый в
дальнейшем "Исполнитель", в лице Шарикова
Полиграфа Полиграфовича, действующего на
основании свидетельства о государственной
регистрации 12 от 05.09.2008, с другой стороны,
именуемые в дальнейшем Стороны, заключили
настоящий Договор о нижеследующем…
Поиск по средней ширине буквы
Рабинович Мойша||
        ||      Йосифович именуемый||
                        ||          в
Поиск по средней ширине буквы
Рабинович Мойша||
         ||                  ||        ||
                   Йосифович именуемый в
|
дальнейшем "Заказчик", в лице Рабиновича |
             ||          | ||     ||
Мойши Йосифовича, действующего на
основании Устава, с одной стороны, и Шариков
Полиграф Полиграфович, именуемый в
дальнейшем "Исполнитель", в лице Шарикова
Полиграфа Полиграфовича, действующего на
основании свидетельства о государственной
регистрации 12 от 05.09.2008, с другой
стороны, именуемые в дальнейшем
Стороны, заключили настоящий Договор о
нижеследующем…
Нормальный способ тоже не поможет
Курсор = схлопнутое выделение
Selection API
Можно взять координаты выделенного
текста!




tinyurl.com/selcoords
Почти во всех браузерах
Кроме Opera < 10.5 и Firefox < 4
Бешеный курсор
Рабинович Мойша Йосифович именуемый в
дальнейшем "Заказчик", в лице Рабиновича
Мойши Йосифовича, действующего на
основании Устава, с одной стороны, и Шариков
Полиграф Полиграфович, именуемый в
дальнейшем "Исполнитель", в лице Шарикова
Полиграфа Полиграфовича, действующего на
основании свидетельства о государственной
регистрации 12 от 05.09.2008, с другой стороны,
именуемые в дальнейшем Стороны, заключили
настоящий Договор о нижеследующем…
iframe
Спасибо DesignMode


 iframe
Отслеживаем координаты мыши
Bubbling
Bubbling
ReBubbling + coords fix
Здравствуй, Опера!
getElementFromPoint
В редакторе всё
 редактируется
В редакторе всё
редактируется… почти
Отслеживаем события
Универсально — хорошо

  Неуниверсально — плохо

        Догадайтесь-ка кто!
Не отслеживаем события
Editing API спасёт мир

    tinyurl.com/editapi
   tinyurl.com/editapi2
Editing API спасёт мир?

     tinyurl.com/editapi
    tinyurl.com/editapi2
Своя модель отображения
Canvas

habr.ru/p/141434
HTML DOM API

 docs.google.com
Google Kix View Model

Рабинович Мойша Йосифович именуемый в дальнейшем
                        c

"Заказчик", в лице Рабиновича Мойши Йосифовича, действующего
                               c

на основании Устава, с одной стороны, и Шариков Полиграф
                             c

Полиграфович, именуемый в дальнейшем "Исполнитель", в лице
                            c

Шарикова Полиграфа Полиграфовича, действующего на основании
                            c

свидетельства о государственной регистрации 12 от 05.09.2008, с
                              c

другой стороны, именуемые в дальнейшем Стороны, заключили
                             c

настоящий Договор c нижеследующем…
                  о
Google Kix View Model

Рабинович Мойша Йосифович именуемый в дальнейшем и потом даже
                              c

"Заказчик", в лице Рабиновича Мойши Йосифовича, действующего
                               c

на основании Устава, с одной стороны, и Шариков Полиграф
                             c

Полиграфович, именуемый в дальнейшем "Исполнитель", в лице
                            c

Шарикова Полиграфа Полиграфовича, действующего на основании
                            c

свидетельства о государственной регистрации 12 от 05.09.2008, с
                              c

другой стороны, именуемые в дальнейшем Стороны, заключили
                             c

настоящий Договор c нижеследующем…
                  о
Google Kix View Model

Рабинович Мойша Йосифович именуемый в дальнейшем и потом
                           c

даже "Заказчик", в лице Рабиновича Мойши Йосифовича,
                            c

действующего на основании Устава, с одной стороны, и Шариков
                             c

Полиграф Полиграфович, именуемый в дальнейшем "Исполнитель",
                             c

в лице Шарикова Полиграфа Полиграфовича, действующего на
                            c

основании свидетельства о государственной регистрации 12 от
                             c

05.09.2008, с другой стороны, именуемые в дальнейшем Стороны,
                                c

                      c
заключили настоящий Договор о нижеследующем…
Google Kix View Model Cursor



          <div></div>
@outring

More Related Content

Viewers also liked

Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...
Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...
Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...Els Brouwers
 
Beste werkgevers-onderzoek-2013(3)
Beste werkgevers-onderzoek-2013(3)Beste werkgevers-onderzoek-2013(3)
Beste werkgevers-onderzoek-2013(3)Effectory
 
Huisarts en wijkverpleegkundige gouden duo Agora 2013
Huisarts en wijkverpleegkundige gouden duo Agora 2013Huisarts en wijkverpleegkundige gouden duo Agora 2013
Huisarts en wijkverpleegkundige gouden duo Agora 2013Raedelijn
 
Workinprogress afsluiting inup_academy
Workinprogress afsluiting inup_academyWorkinprogress afsluiting inup_academy
Workinprogress afsluiting inup_academyKING
 
Lokale innovatieprojecten buurtzorg
Lokale innovatieprojecten buurtzorgLokale innovatieprojecten buurtzorg
Lokale innovatieprojecten buurtzorgJumbo Klercq
 
Interview Jos de Blok
Interview Jos de BlokInterview Jos de Blok
Interview Jos de BlokHedwig Wiebes
 
20150908 blauwe zorg (ggd)
20150908 blauwe zorg (ggd)20150908 blauwe zorg (ggd)
20150908 blauwe zorg (ggd)GGD Zuid Limburg
 
Buurtkracht presentatie proven nov 2013
Buurtkracht presentatie proven nov 2013Buurtkracht presentatie proven nov 2013
Buurtkracht presentatie proven nov 2013Proven Partners
 
Buurgerichte zorg als toekomstmodel - Herwig Teugels
Buurgerichte zorg als toekomstmodel - Herwig TeugelsBuurgerichte zorg als toekomstmodel - Herwig Teugels
Buurgerichte zorg als toekomstmodel - Herwig TeugelsVoka Health Community
 
Buurtgerichte zorg - Olivia Vanmechelen en Bart Denys
Buurtgerichte zorg - Olivia Vanmechelen en Bart DenysBuurtgerichte zorg - Olivia Vanmechelen en Bart Denys
Buurtgerichte zorg - Olivia Vanmechelen en Bart DenysVoka Health Community
 
Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...
Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...
Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...CrisZomerdijk
 

Viewers also liked (12)

Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...
Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...
Silvie Vanhoutteghem 'Integraal werken rond wonen zorg en welzijn in de provi...
 
Beste werkgevers-onderzoek-2013(3)
Beste werkgevers-onderzoek-2013(3)Beste werkgevers-onderzoek-2013(3)
Beste werkgevers-onderzoek-2013(3)
 
Huisarts en wijkverpleegkundige gouden duo Agora 2013
Huisarts en wijkverpleegkundige gouden duo Agora 2013Huisarts en wijkverpleegkundige gouden duo Agora 2013
Huisarts en wijkverpleegkundige gouden duo Agora 2013
 
Workinprogress afsluiting inup_academy
Workinprogress afsluiting inup_academyWorkinprogress afsluiting inup_academy
Workinprogress afsluiting inup_academy
 
Lokale innovatieprojecten buurtzorg
Lokale innovatieprojecten buurtzorgLokale innovatieprojecten buurtzorg
Lokale innovatieprojecten buurtzorg
 
Interview Jos de Blok
Interview Jos de BlokInterview Jos de Blok
Interview Jos de Blok
 
ZZG zorggroep
ZZG zorggroepZZG zorggroep
ZZG zorggroep
 
20150908 blauwe zorg (ggd)
20150908 blauwe zorg (ggd)20150908 blauwe zorg (ggd)
20150908 blauwe zorg (ggd)
 
Buurtkracht presentatie proven nov 2013
Buurtkracht presentatie proven nov 2013Buurtkracht presentatie proven nov 2013
Buurtkracht presentatie proven nov 2013
 
Buurgerichte zorg als toekomstmodel - Herwig Teugels
Buurgerichte zorg als toekomstmodel - Herwig TeugelsBuurgerichte zorg als toekomstmodel - Herwig Teugels
Buurgerichte zorg als toekomstmodel - Herwig Teugels
 
Buurtgerichte zorg - Olivia Vanmechelen en Bart Denys
Buurtgerichte zorg - Olivia Vanmechelen en Bart DenysBuurtgerichte zorg - Olivia Vanmechelen en Bart Denys
Buurtgerichte zorg - Olivia Vanmechelen en Bart Denys
 
Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...
Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...
Buurtzorg Nederland: ‘back to basics’ - ManagementSite-Cris Zomerdijk-Jos de ...
 

Recently uploaded (9)

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 

Как сделать текстовый онлайн редактор и испортить себе жизнь

  • 1. Как сделать текстовый онлайн-редактор и испортить себе жизнь Аксёнов Василий artyv@kontur.ru @outring
  • 2.
  • 3. Договор № 1 Рабинович Мойша Йосифович именуемый в дальнейшем "Заказчик", в лице Рабиновича Мойши Йосифовича, действующего на основании Устава, с одной стороны, и Шариков Полиграф Полиграфович, именуемый в дальнейшем "Исполнитель", в лице Шарикова Полиграфа Полиграфовича, действующего на основании свидетельства о государственной регистрации 12 от 05.09.2008, с другой стороны, именуемые в дальнейшем Стороны, заключили настоящий Договор о нижеследующем…
  • 4. Договор № 1 Рабинович Мойша Йосифович именуемый в дальнейшем "Заказчик", в лице Рабиновича Мойши Йосифовича, действующего на основании Устава, с одной стороны, и Шариков Полиграф Полиграфович, именуемый в дальнейшем "Исполнитель", в лице Шарикова Полиграфа Полиграфовича, действующего на основании свидетельства о государственной регистрации 12 от 05.09.2008, с другой стороны, именуемые в дальнейшем Стороны, заключили настоящий Договор о нижеследующем…
  • 5.
  • 6. Редактор в браузере? DesignMode ContentEditable document.designMode = 'on' <div contenteditable="true"> Editable content here </div> IE 5.5, Chrome 4, Safari 3.1, IE 5.5, Chrome 4, Safari Opera 9, Firefox 2 3.1, Opera 9, Firefox 3.5
  • 8. Генерируемый код Mozilla Firefox Internet Explorer <span style="font-weight: <STRONG>Жирный текст bold;">Жирный текст</span> </STRONG> <span style="font-weight: <STRONG><EM><U>Жирный, bold; font-style: italic; text- подчёркнутый и курсив! decoration: underline;"> </U></EM></STRONG> Жирный, подчёркнутый и курсив!</span>
  • 9. Универсально — хорошо Неуниверсально — плохо Капитан О.
  • 10. Популярные редакторы TinyMCE CKEditor Всем нравится Всем нравится Вроде работает Вроде работает Есть документация Нет документации  FAIL
  • 12.
  • 14.
  • 15.
  • 16. Ищем границы слов Рабинович Мойша Йосифович именуемый в дальнейшем "Заказчик", в лице Рабиновича Мойши Йосифовича, действующего на основании Устава, с одной стороны, и Шариков Полиграф Полиграфович, именуемый в дальнейшем "Исполнитель", в лице Шарикова Полиграфа Полиграфовича, действующего на основании свидетельства о государственной регистрации 12 от 05.09.2008, с другой стороны, именуемые в дальнейшем Стороны, заключили настоящий Договор о нижеследующем…
  • 17. Поиск по средней ширине буквы Рабинович Мойша|| || Йосифович именуемый|| || в
  • 18. Поиск по средней ширине буквы Рабинович Мойша|| || || || Йосифович именуемый в | дальнейшем "Заказчик", в лице Рабиновича | || | || || Мойши Йосифовича, действующего на основании Устава, с одной стороны, и Шариков Полиграф Полиграфович, именуемый в дальнейшем "Исполнитель", в лице Шарикова Полиграфа Полиграфовича, действующего на основании свидетельства о государственной регистрации 12 от 05.09.2008, с другой стороны, именуемые в дальнейшем Стороны, заключили настоящий Договор о нижеследующем…
  • 21. Selection API Можно взять координаты выделенного текста! tinyurl.com/selcoords Почти во всех браузерах Кроме Opera < 10.5 и Firefox < 4
  • 22. Бешеный курсор Рабинович Мойша Йосифович именуемый в дальнейшем "Заказчик", в лице Рабиновича Мойши Йосифовича, действующего на основании Устава, с одной стороны, и Шариков Полиграф Полиграфович, именуемый в дальнейшем "Исполнитель", в лице Шарикова Полиграфа Полиграфовича, действующего на основании свидетельства о государственной регистрации 12 от 05.09.2008, с другой стороны, именуемые в дальнейшем Стороны, заключили настоящий Договор о нижеследующем…
  • 23.
  • 29.
  • 31.
  • 33.
  • 35. В редакторе всё редактируется
  • 37.
  • 38.
  • 40. Универсально — хорошо Неуниверсально — плохо Догадайтесь-ка кто!
  • 41.
  • 43.
  • 44. Editing API спасёт мир tinyurl.com/editapi tinyurl.com/editapi2
  • 45. Editing API спасёт мир? tinyurl.com/editapi tinyurl.com/editapi2
  • 46.
  • 49. HTML DOM API docs.google.com
  • 50. Google Kix View Model Рабинович Мойша Йосифович именуемый в дальнейшем c "Заказчик", в лице Рабиновича Мойши Йосифовича, действующего c на основании Устава, с одной стороны, и Шариков Полиграф c Полиграфович, именуемый в дальнейшем "Исполнитель", в лице c Шарикова Полиграфа Полиграфовича, действующего на основании c свидетельства о государственной регистрации 12 от 05.09.2008, с c другой стороны, именуемые в дальнейшем Стороны, заключили c настоящий Договор c нижеследующем… о
  • 51. Google Kix View Model Рабинович Мойша Йосифович именуемый в дальнейшем и потом даже c "Заказчик", в лице Рабиновича Мойши Йосифовича, действующего c на основании Устава, с одной стороны, и Шариков Полиграф c Полиграфович, именуемый в дальнейшем "Исполнитель", в лице c Шарикова Полиграфа Полиграфовича, действующего на основании c свидетельства о государственной регистрации 12 от 05.09.2008, с c другой стороны, именуемые в дальнейшем Стороны, заключили c настоящий Договор c нижеследующем… о
  • 52. Google Kix View Model Рабинович Мойша Йосифович именуемый в дальнейшем и потом c даже "Заказчик", в лице Рабиновича Мойши Йосифовича, c действующего на основании Устава, с одной стороны, и Шариков c Полиграф Полиграфович, именуемый в дальнейшем "Исполнитель", c в лице Шарикова Полиграфа Полиграфовича, действующего на c основании свидетельства о государственной регистрации 12 от c 05.09.2008, с другой стороны, именуемые в дальнейшем Стороны, c c заключили настоящий Договор о нижеследующем…
  • 53. Google Kix View Model Cursor <div></div>