Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать обратную операцию в highlight.js или другой подобной библиотеки? (https://javascript.ru/forum/misc/59373-kak-sdelat-obratnuyu-operaciyu-v-highlight-js-ili-drugojj-podobnojj-biblioteki.html)

The_Nobody 08.11.2015 16:27

Как сделать обратную операцию в highlight.js или другой подобной библиотеки?
 
Использую библиотеку highlight.js для подсветки синтаксиса. Есть такой код
<div id="container">
    <h1>Hello World!!</h1>
</div>
<button id="edit">Edit</button>
<button id="done">Done</button>

var container = document.getElementById('container'),
    edit = document.getElementById('edit'),
    done = document.getElementById('done');

edit.addEventListener('click', function () {
    var code = container.innerHTML,
        $pre = document.createElement('pre'),
        $code = document.createElement('code');

    container.setAttribute('contenteditable', true);
    container.removeChild(container.childNodes[1]);
    container.appendChild($pre);
    $pre.appendChild($code);
    $code.innerHTML = code.replace(/<|>/g,function(s){return s==="<"?"&lt;":"&gt;"}).replace( /<(\/?script)>/g ,"&lt;$1&gt;");
    hljs.highlightBlock($code);

}, false);

done.addEventListener('click', function () {
    // ОБРАТНАЯ ОПЕРАЦИЯ
}, false);

При нажатии на кнопку edit я показываю html код с подсветкой, при этом пользователь может этот код редактировать. Проблема в том, что не знаю, как выполнить обратную операцию. То есть, чтоб при нажатии на кнопку done, то что отредактировал пользователь распарсилось и выполнилось, как html. То есть, при редактировании он видел
<h1>Hello World</h1>

А когда нажал done и при этом ничего не поменял в коде, то увидел: Hello World Возможно библиотека highlight.js не умеет делать обратную операция, тогда подскажите пожалуйста, если вы знаете другие подобные библиотеки с подсветкой синтаксиса, которые умеют это делать. Спасибо за помощь и ваше время.


Часовой пояс GMT +3, время: 11:17.