ILO: Greasemonkey, Platypus, RIP

3rd September 2005 - 02:08

Попробую удовлетворить два пожелания пользователей ILO, высказанных более пары раз и не слишком затруднительных в плане этого самого удовлетворения:

  • Дополнительный режим, в котором загружаются все изображения-ссылки для удобства навигации;
  • Задержка загрузки графики до момента загрузки HTML для манипулирования кодом страницы посредством Greasemonkey и прочих.

Теория

По причине того, что в методе shouldLoad компоненты расширения процесс поиска родительского таба документа, содержащего запрашиваемый графический элемент, занимает некоторое время, то политика таба присваивается непосредственно самому документу (document.iloDocPolicy). Было одно интересное решение, на которое указал Владимир Палант, но его поломали в одной из версий; сейчас вроде бы снова заработало (todo: надо потестировать, сравнить скорость работы).

Списки адресов элементов, запрещённых и разрешённых к загрузке, также хранятся в области, доступной для манипулирования их значениями посредством JavaScript (document.iloUrlsBlock, document.iloUrlsPass).

iloDocPolicy может принимать значения от 1 («Load all images») до 4 («Don’t load images»). iloUrlsBlock/iloUrlsPass — строковые литералы; содержат соответствующие URL, разделённые пробелом.

Помимо этого каждый заблокированный элемент имеет переменную iloFixP = "fixed" (это необходимо для быстрого отсеивания запросов блокированных ранее элементов при динамическом изменении источника [rollovers энд компани]) и атрибут ilo-ph-fix, значение которого содержит полный URL элемента (для применения правил userCSS и быстрого поиска через XPath).

В общем, DOM Inspector и «Ctrl+A -> View Source» покажут интересующимся, что страница претерпевает некоторые изменения. Сам я противник подобных заигрываний расширений с исходным кодом страницы, но есть причины, по которым это сделано именно так, а не иначе.

Практика

Для загрузки блокированного элемента (img) достаточно перенести его адрес (img.src) из iloUrlsBlock в iloUrlsPass, обнулить img.iloFixP и обновить источник (img.src = img.src).

ILORefresher.user.js — загружает всю блокированную графику после окончания загрузки страницы, если у таба выставлен режим «Load cached images only» (проверено на Firefox/20050711 и Greasemonkey 0.5.1). Сам по себе скрипт бесполезен, поэтому меняем на свой вкус область его действия (@include), условия вызова refresher.refreshPage и параметры XPath. Например, для загрузки только ссылок-изображений можно попробовать такое выражение:

xpath = _xpath[0] + "a/*[@ilo-ph-fix]";

PS. Вы уже догадались, что работу расширения можно порушить одной строкой в шапке страницы?

JavaScript:
//~ Уважение к пользователям? А что это?
document.iloDocPolicy = 1;

Categories: dHtml, Soft | comments: (0)

Комментарии временно отключены.