HtmlEditor
이 컨트롤은 무엇인가요?
HtmlEditor는 TinyMCE를 감싼 syn.uicontrols 컨트롤로, 게시판 본문이나 공지사항처럼 "서식 있는 문서(WYSIWYG)"를 편집할 때 사용합니다. 화면에 <syn_htmleditor> 태그를 배치하면 컨트롤이 초기화되면서 다음과 같은 일이 일어납니다.
- 원래 배치했던 엘리먼트는
id="<원래id>_hidden"으로 이름이 바뀌고 화면에서 숨겨집니다(display: none). 이 엘리먼트에는 옵션 값(JSON)만 보관됩니다. 이때 원래 엘리먼트 안에 적어둔 HTML(태그 내부 콘텐츠)이 에디터의 초기 값으로 사용됩니다. - 같은 부모 아래 원래
id를 그대로 물려받은 새<div>가 만들어지고, 그 안에 TinyMCE 에디터(tinymce.init(setting))가 렌더링됩니다. - TinyMCE 엔진 자체(
/lib/tinymce/tinymce.min.js)는 페이지에서 최초 1회만 비동기로 로드되며, 로드가 끝나기 전에 여러 개의<syn_htmleditor>가 있으면 내부 대기열(editorPendings)에 쌓였다가 로드 완료 후 순서대로 초기화됩니다. syn-options에repositoryID를 지정하면, 에디터에 이미지를 붙여넣거나 드래그&드롭할 때 자동으로 파일 서버(fileManagerServer)에 업로드하고, 업로드된 이미지의 실제 경로로<img>태그를 교체해 줍니다.
SourceEditor(코드 편집)와의 차이
| 구분 | HtmlEditor ($htmleditor) | SourceEditor ($sourceeditor) |
|---|---|---|
| 기반 엔진 | TinyMCE | Monaco Editor (VS Code 편집 엔진) |
| 편집 대상 | 서식 있는 문서(HTML 리치 텍스트) — 굵게, 표, 이미지 삽입 등 | 소스 코드/구조화된 텍스트 — JavaScript, JSON, SQL, HTML 등 |
| 결과물 | HTML 마크업 문자열 |