
Vlastní jednoduchý WYSIWYG editor
Chceme-li na webu zadávat text a běžná <textarea> už nestačí, řešením je napsat si vlastní WYSIWYG editor.
Kromě toho, že lze použít již hotové komplexní editory jako.
- TinyMCE (třeba i se souborovým managerem)
- CKEditor
… je možné si vlastní základní editor s pár funkcemi nikterak obtížně vytvořit. V situaci, kdy chceme jen lehce vylepšit obyčejnou <textarea>, to může dávat smysl.
Jak na to
Základem může být <iframe> se zapnutým designMode. Do kterého, kromě toho, že můžeme psát, lze přidávat různé příkazy pomocí execCommand.
Poslední věc je synchronisace obsahu editoru se skutečným formulářovým polem. Obsah získáme pomocí vlastnosti innerHTML. Tuto hodnotu poté stačí při stisknutí odesílacího tlačítka vložit do skutečného formuláře a odeslat jej klasickou cestou. Anebo rovnou formulář odesílat AJAXem.
Takto získaný obsah je pochopitelně potenciálně risikový, takže je nezbytné provést vyčistění.
Budeme-li takový editor používat pro editaci, stačí k tomu určené HTML vypsat ve skriptu, který se připojí jako src do <iframe>.
Ukázka jednoduchého editoru
HTML kód
<iframe id="editor" class="editor" frameborder="0"></iframe>
JS kód
<script>
var editor, iframe;
window.onload = function() {
iframe = document.getElementById("editor");
editor = iframe.contentWindow.document;
editor.designMode = "on";
}
function format(akce) {
iframe.contentWindow.focus();
editor.execCommand(akce, false, null);
}
</script>
Použití ovládacích tlačítek
<button onclick="format('bold')">Tučně</button>Související články
JavaScript null a undefined
Rozdíly mezi null a undefined v JavaScriptu, kdy je používat a jak se vyhnout běžným chybám.
Sleep v JavaScriptu
Jak implementovat sleep/delay funkcionalitu v JavaScriptu pomocí Promise a async/await
JavaScript Battery API
Jak v JS zjistit stav baterie, co dnes funguje a kdy API nepoužívat.