Модификация в реал-тайме ("на лету") загружаемой в Firefox веб-страницы. Возможно ли?
Хочу написать расширение (аддон) Firefox, которое позволяет править/парсить HTML и CSS код загружаемой странички "на лету" и выдавать её в заданном юзверем стиле.
Т.е., типа, юзверь пишет свой скрипт, и этот скрипт автоматически приаттачивается к страницам, с заданными ювзерем URL-ами. К примеру, хочу я чтобы выдача яндекса отображалась в виде EXCEL-таблички, с графами "Домен", "Ключевые слова", "посещалась/не посещалась ссылка". Тогда я в этом расширении задаю, что нужно вырезать из кода страницы выдачи яндекса, что добавить, что подправить и теперь браузер прежде чем отобразить страницу яндекса сначала "шлифует" её моим скриптом. Возможно ли такое написать на JavaScript? В частности, мне нужно "повыкусывать" из выдачи яндексы сниппеты, в которых содержаться факты, которые уже есть в моей базе данных или в "черном списке". Как это можно сделать? |
Всё возможно. Однако именно "на лету" можно работать только с чистым текстом(а точнее даже бинарными данными) и кусками(что очевидно). Если же нужна структура документа, то тут уж придётся подождать загрузки и (частичной) обработки.
Для второго достаточно greasemonkey, смысла городить ещё чего - нет. В первом же случае скорее всего потребуется обзёрвер на http-on-examine-response. Или иные варианты. |
Цитата:
Т.е. запускает скрипт, который правит код веб-страницы на лету и юзверь видит в броузере уже не оригинальную веб-страницу, а её версию, обработанную юзер-скриптом. В частности, может видеть выдачу яндекса с выкущенными сниппетами в виде Excel-таблички. Это так? В смысле, можно так скриптами сделать в броузере? |
Тут я вижу пока только одну проблему: запись и чтение с харда.
Насколько мне известно, политика безопасности запрещает JS-коду выполнять чтение и запись с харда. И как тогда реализовать взаимодействие моего скрипта с базой знаний на харде? |
Цитата:
//@run-at document-startи удалять ненужные элементы по мере их появления. Можно это даже обставить так, что пользователь не заметит. Но какое-то время они всё же будут присутствовать в документе. Цитата:
Если же вы пишете расширение - то у вас есть доступ к потрохам браузера, и творить с системой юзера вы можете что хотите. При использовании greasemonkey остаётся только indexdDB или GM_set\getValue. |
Цитата:
Цитата:
|
Цитата:
Ведь аддон - это тот же ява скрипт. Тогда ява скрипт аддона может читать и писать на хард юзверя, а просто ява скрипт не может. Где находится тот "флажок", который разрешает/запрещает доступ к харду клиента? |
Исмаил Прокопенко, браузеры предоставляют аддонам API для небезопасных действий. И если API того же хрома довольно скуден, то в Firefox картина совсем другая, ибо сам firefox наполовину работает на javascript, а другая половина прокинута внутрь привилегированно кода с помощью обёрток.
|
Цитата:
|
Исмаил Прокопенко,
В старой опере была такая фича http://sg.uploads.ru/qCR9e.jpg Правдо стиль задавался либо дефолтный, либо файлом в настройках оперы 2. На лету совсем нет смысла, ибо страницу открыть нужно чтобы понять, что править... По идее сгородить типа бокового сайдбара, чуть сужающего экран, и там выпарсенный стиль... По идее, фича нужна лишь для избранных сайтов, с запоминаемым отредактированным стилем в двух вариантах: a) Для всего домена http://javascript.ru/ б) Для конкретной группы страниц типа http://javascript.ru/forum/... Но вообщем то занудство, зная структуру конкретного сайта можно легко сделать скрипт закладку, меняющего стиль, ибо обычный юзер вряд ли полезет в css, а кто будет лезть, знает верстку, а раз знает, (а таких будет доли процента от пользователей браузера... сможет для конкретного сайта сам сделать... Карочь стартап мудрёный и невостребованный ============ В принципе есть к примеру скрипты смены стилей для конкретных структуры сайта => http://hostjs-mybb2011.narod.ru/ChangeStyle.htm Легко перевести подобное и в скрипт-закладку, Писать универсальный... ну если ток для себя... но есть же инструменты в браузере позволяющие править стиль, а вставить подготовленное(распарсив тем же скриптом все элементы по кнопке завершения) можно уже и закладкой и сrazy monkey js и т.д. Т.е вся соль что правка на "Лету" - реально будет десятки минут |
Цитата:
|
PS: Из приятный стартапов на эту тематику видел лишь один плагин к браузеру, позволяющий жестом мыши разгонять лишние элементы за пределы экрана(на мыши нужно было нажать одновременно две кнопки, возврат в исходное - двойной клик обоими), Либо кликая несколько раз колёсико увеличивать нужный элемент в размерах
|
Цитата:
Нужно не просто менять стиль. А менять его в соответствии с локальной базой данных. Например, чтобы определить нужно ли отображать данный сниппет и если да, то в каком стиле, скрипт должен залезть в базу данных и проанализировать ее. А после парсинга страницы скрипт должен что-то добавлять (или напротив, удалять) из базы данных. Т.е. у меня стиль отображения страницы не постоянный, а меняются в зависимости от состояния базы данных. Кроме того. Хотелось бы добавить к скрипту юзер-интерфейс и интерактивность. К примеру, выделил мышкой слово, кликнул и в контекстном меню выбрал, что нужно сделать. А самые важные меню внедрить прямо в "морду" Firefox. Это можно сделать на JS? |
Цитата:
Это почему? Не очень понял. Мне то надо, чтобы "подмена" оригинальной веб-страницы длилась столько, чтобы глаз не успевал заметить. Т.е. доли секунды |
Цитата:
Объясню подробней. Я хочу написать что-то типа метапоисковика-паука-граббера, который сам будет парсить выдачу яндекса, гугла и др. поисковиков, ходить по ссылкам и исследовать их контент, сохранять в базу только нужное, и отображать результаты работы в броузере фильтруя из выдачи не нужное. При этом прямо в броузере должна поддерживаться интерактивность как при работе с интернетом так и с локальной базой данных, реализуемая кнопочками, в строенными в браузер панелями и контекстными меню. Есть такая программа. Называется FileForFiles (aka SiteSutnik). Я ей пользуюсь. Но у неё мне много чего не хватает. Так вот я хочу написать более продвинутый и удобный броузерный вариант этой программы |
Цитата:
По поводу вашей задачи ещё раз говорю: в firefox (пока?) возможно всё, практически полностью его переделать можно. Самый простой для вас сейчас вариант - идёте на https://addons.mozilla.org/ru/firefox/ и скачиваете аддоны, которые делают что-то примерно похожее на то, что вам нужно, или выглядят примерно так, как вам нужно и смотрите их код: .xpi и .ja - обычные zip архивы. |
Цитата:
Которые, к тому же, постоянно меняются и перекраиваются при выходе новых версий Firefox. Даже саму архитектуру аддонов меняют |
Ага, жизнь - боль, хе-хе.
|
господа! как думаете! сколько времени у меня займет написание такого приложения учитывая что я полный ноль как в JS (я кодил десктопные приложения не работающие с вебом на с++) так и в написании аддонов.
Все же были новичками. |
Исмаил Прокопенко, месяца два
...после которых ты потеряешь энтузиазм и бросишь это дело нафиг.) На самом деле зависит от того, насколько ты серьёзен в данном вопросе. Если ты написал себе чёткое тз и имеешь опыт программирования серьёзных вещей, а не только "утилиток для себя" - то за те же пару месяцев и напишешь. |
Часовой пояс GMT +3, время: 09:15. |