Вот нужен
document.execCommand и если требуется что-то по-сложней, то
Range
Но единственный адекватный вариант - брать готовый(и не заброшенный разработчиками) WYSIWYG и выпиливать из него всё не нужное.
Редактирование html наживую реализовано в браузерах
ужасно, имеет кучу подводных граблей и требует большого количества костылей, причём специфичных для каждого браузера. Самостоятельно, чтоб добиться безглючности и универсальности даже простых вещей, вам придётся потратить кучу времени и нервов, без гарантий, что в каком-либо особом случае всё не развалится.