Очистка HTML с использованием JavaScript - PullRequest
5 голосов
/ 21 декабря 2011

В разрабатываемом приложении пользователь вводит HTML в текстовое поле, чтобы редактировать элемент на своей странице.На этом этапе пользователь может добавить любой контент, даже неработающий HTML, и некоторые текстовые узлы.

Чтобы убедиться, что я получаю несколько чистый код, я делаю это

var s = document.createElement('div');
s.innerHTML = content;
// loop over each node in s, and if text node is found, wrap in span.
content = s.innerHTML

.проблема с этим фрагментом в том, что содержимое было <TD>Text</TD>, в результате я получаю Text, поскольку в DIV не может быть TD.

Есть ли исправление, которое нужно получитьдействительный контент, во всех случаях?

Ответы [ 2 ]

1 голос
/ 19 апреля 2013

Проблема с использованием DOM заключается в том, что вам не нужен полностью исправленный html, потому что вы добавляете условие, что html может быть фрагментом кода.Вы хотите, чтобы некоторые некорректные html были исправлены, а некоторые нет.

Немного погуглив, этот плагин jQuery поднял: http://www.davidpirek.com/blog/html-beautifier-jquery-plugin

, но я не могу ручаться за него.

Я бы, вероятно, согласился бы с Грэмом и предложил бы HTML Tidy, поскольку он зрелый и быстрый, даже если вам придется ждать ответа.

0 голосов
/ 21 декабря 2011

Лучшим решением было бы передать вашу HTML-строку на страницу сервера, работающую HTML Tidy , которая затем вернула бы «чистую» версию.Боюсь, я не знаю ни о каких надежных решениях только для клиентской стороны.

РЕДАКТИРОВАТЬ: одно дешевое решение - использовать сам DOM или даже быстрее с jQuery:

var input='<div><td>foo</td>';
var output = $('<div>'+html+'</div>').html(); //=> '<div>foo</div>'

Это не очистит все ошибки, но может быть достаточно для вас.

...