Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Реализация HTML5 валидатора на чистом яваскрипте? (https://javascript.ru/forum/misc/39807-realizaciya-html5-validatora-na-chistom-yavaskripte.html)

danik.js 12.07.2013 20:10

Реализация HTML5 валидатора на чистом яваскрипте?
 
Думаю такой инструмент был бы очень кстати.
Основное применение - контроль качества html кода при его написании в web-based HTML-редакторах.
Дополнительное - использование в NodeJS окружении.

Тремуебого валидатора как я понимаю в природе не существует.
Поэтому я начал подбирать полезные материалы.

Возможно у кого-то есть интерес к разработке или полезная инфа - буду рад.

pikko 12.07.2013 22:12

могу пописать регулярки в свободное время, если чё =)

danik.js 12.07.2013 22:23

Боюсь регулярки придется писать всю оставшуюся жизнь. К тому же в JS какая то урезанная имплементация регулярок, так что скорее всего это и вовсе невозможно..

pikko 12.07.2013 22:35

невозможен валидатор, или юзать для этого регулярки?

вообще, тема интересная, по-моему. я бы, возможно, поучаствовал. не уверен только что смогу уделять этому много времени.

ты планируешь валидировать в процессе написания, или уже готовую разметку?

sexyQuery 12.07.2013 23:59

Карма: +1488

sexyQuery 13.07.2013 00:00

регулярками и не сделаешь. нужно парсер писать

mta88 13.07.2013 04:16

есть идея
выдираем парсер из firefox или chrome (он на C++ или C)
компилируем в js с помощью emscripten
используем где хотим

правда тяжелый будет
и тормозить будет наверно

nerv_ 13.07.2013 12:10

<div id="test"></div>

<script>
    var case1 = '123123 <b>7</b> asdads';
    var case2 = ' <div> asdnaslklj ';

    var box = document.getElementById( 'test' );
    
    box.innerHTML = case1;
    alert( case1 === box.innerHTML );

    box.innerHTML = case2;    
    alert( case2 === box.innerHTML );
</script>

:)

danik.js 13.07.2013 13:03

Цитата:

Сообщение от mta88
есть идея
выдираем парсер из firefox или chrome (он на C++ или C)
компилируем в js с помощью emscripten
используем где хотим

Насколько я знаю Firefox использует парсер, исходники которого на Java. Они просто транслируют код в C вроде бы.
Ну а с Java поможет GWT. Вот кстати рабочий результат: http://livedom.validator.nu/

Но парсер - это только начало. Парсер может указать только на ошибки синтаксиса HTML. Это уже не мало, но этого недостаточно. Важно проверять вложенность элементов и корректность типов атрибутов/элементов. Вот это уже будет посложнее.

mta88 13.07.2013 13:26

Цитата:

Сообщение от danik.js (Сообщение 262051)
Но парсер - это только начало.

так я шутил насчет emscripten :)
мне так кажется
а еще нашел исходники валидатора w3c вот здесь (не смотрел, что там внутри)


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