CoderCastrov logo
CoderCastrov
JavaScript - Язык программирования

Декодирование HTML из JSON

Декодирование HTML из JSON
просмотров
1 мин чтение
#JavaScript - Язык программирования
Table Of Content

    Часто при парсинге веб-страниц вы сталкиваетесь с HTML-значениями в тексте, которые нужно преобразовать в символьную форму. В то время как у jQuery и различных других языков есть реализации для декодирования этих значений, в нативном JavaScript такой возможности нет.

    Для решения этой проблемы я начал с разбора HTML-кодов с использованием таблицы преобразования слово за словом. Этот метод был безопасным и не требовал доступа к DOM веб-страницы. Хотя метод работал, он имел недостаток в виде большого размера файла из-за необходимости упаковки таблицы преобразования в файл. Еще одним недостатком этого решения было время, затрачиваемое на разбор сотен строк различной сложности.

    Ища другие реализации этой идеи, я нашел решение от Rob W на Stack Overflow.

    function decodeHtml(html) {
        var txt = document.createElement("textarea");
        txt.innerHTML = html;
        return txt.value;
    }

    Приведенный выше код не удаляет HTML-теги, как другие подходы, и обладает хорошей производительностью. Большая проблема заключается в том, что он имеет прямой доступ к DOM. Чтобы уменьшить это, я рекомендую использовать следующий код, созданный мной на основе решения Роба.

    function decodeHtml(html) {
        var htmlDoc = document.implementation.createHTMLDocument("");
        var txt = htmlDoc.createElement("textarea");
        txt.innerHTML = html;
        return txt.value;
    }

    Это предотвратит выполнение скриптов и создаст разделение между вашим приложением и его возможностями парсинга. Он сохраняет все преимущества первого решения и безопасен для использования в производстве.