Xpoint
   [напомнить пароль]

Преобразовать html до рендеринга страницы

Метки: [без меток]
2007-08-17 13:01:09 [обр] Влад Терехов(0/3)[досье]

Кучи знакомых выкладывают фотки на мерзкий фотофайл, поэтому решил написать экстеншн, который бы преобразовывал страницы этого сайта в нормальный вид.

То есть фактически нужно встроить фильтр, который бы преобразовывал html до отображения страницы в браузере.

Пожалуйста подскажите в какую сторону смотреть (интерфейсы, события, etc).

Вроде как экстенш AdBlockPlus делает примерно то же самое, но я пока не смог найти в его коде то место, где устанавливаются ключевые handler'ы.

спустя 14 дней [обр] Владимир Палант(434/4445)[досье]

Вообще-то — нет, Adblock Plus не работает с HTML-кодом документа, лишь блокирует загрузку отдельных элементов. А вы именно HTML хотите преобразовывать? CSS недостаточно?

Если HTML, то простых решений IMHO нет. Можно заменить nsIHttpChannel своей компонентой — но это из пушки по воробьям. Можно создать observer для сообщения http-on-modify-request и попробовать перенаправлять нужные запросы на локальный прокси-сервер, где вы их и будете преобразовывать. А можно и просто установить Proxomitron, но это уже к расширениям отношения не имеет.

спустя 12 часов [обр] Влад Терехов(0/3)[досье]
Было бы интересно сделать именно расширение. Но не судьба так не судьба. Спасибо за подробный ответ!
спустя 4 дня [обр] Денис[досье]

Хотел сначала создать свою тему, но потом увидел эту и решил написать сюда. У меня та же болячка, только я хотел использовать для этих целей JavaScript. Если набрать в строке адреса выражение типа javascript: [some JS code] то оно выполнится так, как если бы его запустили из сценария встроенного в эту страницу. Но вот загвоздка - я могу выполнить любые выражения, которые не изменяют страницу, например добраться до любого атрибута и элемента, но как только я пытаюсь выполнить какие-то действия, связанные с модификацией страницы, например - поменять значение атрибута visible (вот так - document.getElementById('UglyNewsBlock').style.visibility = 'hidden';), то вместо исчезновения этого элемента исчезает вся страница а на экран выводится значение присваимаемого свойства :( В IE - та же история. Скажите пожалуйста, можно ли это как-то обойти?

Пользовательские стили - опасное оружие в умелых руках :) Есть и удобное расширение, для работы с ними - Stylish. Но многие верстальщики категорически не дружат с семантической разметкой. Больше того, некоторые верстают так, что никаким CSS'ом особо зловредные блоки не зацепишь. Приходится "крыть по площадям". Не смертельно, конечно, но с JavaScript'ом можно было бы получить практически полный контроль над содержимым страницы и отфильтровать и перекроить ее так, как только заблагорассудится :) Я даже подумывал написать свое расширение, которое хранило бы мои сценарии на загружаемые страницы. Но когда столкнулся с суровой реальностью, пришлось малость остудить пыл. Что скажете? Есть ли надежда? :)

спустя 12 часов [обр] Cube(2/2)[досье]
document.getElementById('UglyNewsBlock').style.visibility = 'hidden';), то вместо исчезновения этого элемента исчезает вся страница а на экран выводится значение присваимаемого свойства
Пиши
void(document.getElementById('UglyNewsBlock').style.visibility = 'hidden')
спустя 3 часа 35 минут [обр] Денис[досье]
О! Спасибо.
спустя 2 дня 16 часов [обр] Владимир Палант(434/4445)[досье]
Денис[досье]
Почитайте про GreaseMonkey.
Powered by POEM™ Engine Copyright © 2002-2005