Dec. 28th, 2014

orleanz: (main)
В Джей Квиери есть $.parseHTML(txt)

[livejournal.com profile] 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 стоит всегда на первом месте? Ну далее, всякий неверный синтаксис, незакрытые скобки и т.п. Очень не хочется самому.
orleanz: (main)
Практически вся основная функциональность уже есть. Исходник - файл 600 строк на джаваскрипте.

спасибо [livejournal.com profile] tretiy3 за идею

размер фрейма клипа можно сделать больше, удобнее смотреть не в ленте ЖЖ а прямиком на Vimeo

в клипе читаются ленты 6 дефолтных юзеров за 2008 и 2002 годы, выкачка идет напрямую с серверов Супа.

Lentascope Chrome App Demo from dimitri777 on Vimeo.

Profile

orleanz: (Default)
orleanz

December 2018

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 1st, 2025 02:54 pm
Powered by Dreamwidth Studios