Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Модификация в реал-тайме ("на лету") загружаемой в Firefox веб-страницы. Возможно ли? (https://javascript.ru/forum/css-html-firefox-mizilla/65765-modifikaciya-v-real-tajjme-na-letu-zagruzhaemojj-v-firefox-veb-stranicy-vozmozhno-li.html)

Исмаил Прокопенко 06.11.2016 20:24

Модификация в реал-тайме ("на лету") загружаемой в Firefox веб-страницы. Возможно ли?
 
Хочу написать расширение (аддон) Firefox, которое позволяет править/парсить HTML и CSS код загружаемой странички "на лету" и выдавать её в заданном юзверем стиле.

Т.е., типа, юзверь пишет свой скрипт, и этот скрипт автоматически приаттачивается к страницам, с заданными ювзерем URL-ами.

К примеру, хочу я чтобы выдача яндекса отображалась в виде EXCEL-таблички, с графами "Домен", "Ключевые слова", "посещалась/не посещалась ссылка".

Тогда я в этом расширении задаю, что нужно вырезать из кода страницы выдачи яндекса, что добавить, что подправить и теперь браузер прежде чем отобразить страницу яндекса сначала "шлифует" её моим скриптом.

Возможно ли такое написать на JavaScript?


В частности, мне нужно "повыкусывать" из выдачи яндексы сниппеты, в которых содержаться факты, которые уже есть в моей базе данных или в "черном списке". Как это можно сделать?

Aetae 06.11.2016 20:48

Всё возможно. Однако именно "на лету" можно работать только с чистым текстом(а точнее даже бинарными данными) и кусками(что очевидно). Если же нужна структура документа, то тут уж придётся подождать загрузки и (частичной) обработки.
Для второго достаточно greasemonkey, смысла городить ещё чего - нет. В первом же случае скорее всего потребуется обзёрвер на http-on-examine-response. Или иные варианты.

Исмаил Прокопенко 06.11.2016 21:36

Цитата:

Сообщение от Aetae
Однако именно "на лету" можно работать только с чистым текстом

А на другом форуме мне сказали, что аддон Firefox с названием Greasemonkey это делает на раз.
Т.е. запускает скрипт, который правит код веб-страницы на лету и юзверь видит в броузере уже не оригинальную веб-страницу, а её версию, обработанную юзер-скриптом.

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

Это так?
В смысле, можно так скриптами сделать в броузере?

Исмаил Прокопенко 06.11.2016 21:39

Тут я вижу пока только одну проблему: запись и чтение с харда.
Насколько мне известно, политика безопасности запрещает JS-коду выполнять чтение и запись с харда.

И как тогда реализовать взаимодействие моего скрипта с базой знаний на харде?

Aetae 06.11.2016 21:56

Цитата:

Сообщение от Исмаил Прокопенко (Сообщение 434258)
А на другом форуме мне сказали, что аддон Firefox с названием Greasemonkey это делает на раз.

Он не имеет доступа к исходным данным до их обработки движком. Можно запускать скрипт с параметром
//@run-at document-start
и удалять ненужные элементы по мере их появления. Можно это даже обставить так, что пользователь не заметит. Но какое-то время они всё же будут присутствовать в документе.

Цитата:

Сообщение от Исмаил Прокопенко (Сообщение 434259)
Насколько мне известно, политика безопасности запрещает JS-коду выполнять чтение и запись с харда.
И как тогда реализовать взаимодействие моего скрипта с базой знаний на харде?

В веб песочнице - никак.
Если же вы пишете расширение - то у вас есть доступ к потрохам браузера, и творить с системой юзера вы можете что хотите.
При использовании greasemonkey остаётся только indexdDB или GM_set\getValue.

Исмаил Прокопенко 06.11.2016 22:06

Цитата:

Сообщение от Aetae
Он не имеет доступа к исходным данным до их обработки движком.

Пофиг если :
Цитата:

Сообщение от Aetae
Можно это даже обставить так, что пользователь не заметит.

Главное чтобы в итоге веб-страничка выглядела так, как обработал ее мой парсер

Исмаил Прокопенко 06.11.2016 22:08

Цитата:

Сообщение от Aetae
В веб песочнице - никак.
Если же вы пишете расширение - то у вас есть доступ к потрохам браузера, и творить с системой юзера вы можете что хотите.

Никогда этого не понимал.
Ведь аддон - это тот же ява скрипт.
Тогда ява скрипт аддона может читать и писать на хард юзверя, а просто ява скрипт не может.

Где находится тот "флажок", который разрешает/запрещает доступ к харду клиента?

Aetae 06.11.2016 22:14

Исмаил Прокопенко, браузеры предоставляют аддонам API для небезопасных действий. И если API того же хрома довольно скуден, то в Firefox картина совсем другая, ибо сам firefox наполовину работает на javascript, а другая половина прокинута внутрь привилегированно кода с помощью обёрток.

Исмаил Прокопенко 07.11.2016 02:12

Цитата:

Сообщение от Aetae
браузеры предоставляют аддонам API для небезопасных действий.

Т.е. я могу написать скрипт на JS, который для записи и чтения с харда будет использовать API Firefox?

Deff 07.11.2016 02:32

Исмаил Прокопенко,
В старой опере была такая фича 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 и т.д.

Т.е вся соль что правка на "Лету" - реально будет десятки минут


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