В Джей Квиери есть $.parseHTML(txt)
ivan_gandhi подсказал что и без $ можно
var div = document.createElement('div');
div.innerHTML = txt;
var html = div.childNodes;
Всё это так, если вы пишете обычный js на обычной вебстранице
А я сейчас пишу js который исполняется в Chrome Packaged App, и там всё гораздо строже
Полученное дерево узлов вы не может прицепить к DOM странице приложения, из-за секьюрити
https://developer.chrome.com/apps/contentSecurityPolicy
Что логично, потому что это почти как eval(), что хуже атомной войны
Но есть и еще более тонкие моменты. А именно - мне нужно ТОЛЬКО распарсить текстовый HTML на предмет нахождения в нем картинок (которые могут быть вложены многократно в другие тэги). Если есть дерево узлов, то дальше картинки получаются просто
var imgs = $(html).find("img");
Вы скажете - зачем мне картинки, если я не смогу их присобачить к DOM в моем основном окне? (Кстати, для контектса - эти картинки не что иное как картинки в постингах ЖЖ, а основное окно - окно приложения лентаскоп). Для этого каверзного вопроса я нашел ответ - картинки можно выкачивать отдельно через XHR
http://stackoverflow.com/questions/22152765/content-security-policy-chrome-app-img-src
Для выкачки картинок мне надо знать только их УРЛы, а это можно получить из дерева. Оба указанные выше метода парсинга текстового ХТМЛ - работают, но в Дебаг Консоли Хрома появляется неприятное сообщение
Refused to load the image 'http://l-pics.livejournal.com/drugoi/pic/00gtgb4k.jpg' because it violates the following Content Security Policy directive: "img-src 'self' data: chrome-extension-resource:".
Получается, что стандартные методы парсинга HTМЛ в js - невольно запускают некие более глубокие механизмы, чем мне нужно. Мне нужно только информация из текстовой строки, строка у меня уже есть, так что прочитать ее и найти нужные мне данные в строке никакая секьютири в мире мне помешать не может в принципе.
Короче, похоже на то, что если я хочу чтобы у меня не было сообщений об ошибках, мне придется писать свой парсер ХТМЛ. Но на самом деле, Джон Резиг написал его еще в 2008 году http://ejohn.org/blog/pure-javascript-html-parser/ , похоже придется его использовать..... Не нужны мне красные ошибки в дев.консоли, такой софт не допустят в Chrome Store. C другой стороны, с 2008 года прошло много времени, может это уже заброшенный проект. Вот не хотелось бы мудохаться с этим долго или самому писать.
Неужели нет простого как лом парсера, который просто обрабатывает текстовую стоку и данные тоже в текстовом виде выдает, так что некаких притензий по секьюрити не может быть?
ПС. Понятно, всегда остается вариант с regex txt.match(/(<img\s+src=(['|"].+ и так далее, но хотелось бы что нибудь более красивое. Вообще, я не раз читал что самому парсить ХТМЛ - дело очень сомнительное. Например, с чего я взял что аттрибут src стоит всегда на первом месте? Ну далее, всякий неверный синтаксис, незакрытые скобки и т.п. Очень не хочется самому.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
var div = document.createElement('div');
div.innerHTML = txt;
var html = div.childNodes;
Всё это так, если вы пишете обычный js на обычной вебстранице
А я сейчас пишу js который исполняется в Chrome Packaged App, и там всё гораздо строже
Полученное дерево узлов вы не может прицепить к DOM странице приложения, из-за секьюрити
https://developer.chrome.com/apps/contentSecurityPolicy
Что логично, потому что это почти как eval(), что хуже атомной войны
Но есть и еще более тонкие моменты. А именно - мне нужно ТОЛЬКО распарсить текстовый HTML на предмет нахождения в нем картинок (которые могут быть вложены многократно в другие тэги). Если есть дерево узлов, то дальше картинки получаются просто
var imgs = $(html).find("img");
Вы скажете - зачем мне картинки, если я не смогу их присобачить к DOM в моем основном окне? (Кстати, для контектса - эти картинки не что иное как картинки в постингах ЖЖ, а основное окно - окно приложения лентаскоп). Для этого каверзного вопроса я нашел ответ - картинки можно выкачивать отдельно через XHR
http://stackoverflow.com/questions/22152765/content-security-policy-chrome-app-img-src
Для выкачки картинок мне надо знать только их УРЛы, а это можно получить из дерева. Оба указанные выше метода парсинга текстового ХТМЛ - работают, но в Дебаг Консоли Хрома появляется неприятное сообщение
Refused to load the image 'http://l-pics.livejournal.com/drugoi/pic/00gtgb4k.jpg' because it violates the following Content Security Policy directive: "img-src 'self' data: chrome-extension-resource:".
Получается, что стандартные методы парсинга HTМЛ в js - невольно запускают некие более глубокие механизмы, чем мне нужно. Мне нужно только информация из текстовой строки, строка у меня уже есть, так что прочитать ее и найти нужные мне данные в строке никакая секьютири в мире мне помешать не может в принципе.
Короче, похоже на то, что если я хочу чтобы у меня не было сообщений об ошибках, мне придется писать свой парсер ХТМЛ. Но на самом деле, Джон Резиг написал его еще в 2008 году http://ejohn.org/blog/pure-javascript-html-parser/ , похоже придется его использовать..... Не нужны мне красные ошибки в дев.консоли, такой софт не допустят в Chrome Store. C другой стороны, с 2008 года прошло много времени, может это уже заброшенный проект. Вот не хотелось бы мудохаться с этим долго или самому писать.
Неужели нет простого как лом парсера, который просто обрабатывает текстовую стоку и данные тоже в текстовом виде выдает, так что некаких притензий по секьюрити не может быть?
ПС. Понятно, всегда остается вариант с regex txt.match(/(<img\s+src=(['|"].+ и так далее, но хотелось бы что нибудь более красивое. Вообще, я не раз читал что самому парсить ХТМЛ - дело очень сомнительное. Например, с чего я взял что аттрибут src стоит всегда на первом месте? Ну далее, всякий неверный синтаксис, незакрытые скобки и т.п. Очень не хочется самому.