Статья для совсем юных ;)
Лучше бы написали, как можно работать со страницей в процессе её загрузки или как можно включать css в userscript, если его чуть-чуть…
Процесс обработки страницы скриптом Greasemonkey начинается по DOMContentLoaded. Возможно существуют хаки, которые позволяют включить обработку раньше, но врядли=)
В том-то и дело, что DOMContentLoaded иногда слишком поздно…
Видел в одном из скриптов цикл, который обходил все уже существующие элементы (только нужные скрипту, конечно, но не суть), обрабатывал их и ставил специальный класс, чтобы на следующей итерации пропустить обработанные элементы. Прерывался скрипт как раз на DOMContentLoaded ;)
Вот только я в своём скрипте воссоздать это не смог :(
Я это очень плохо представляю, сам цикл запускается по DOMContentLoaded, вообще всё что внутри скрипта GreaseMonkey можно условно запихнуть в addEventListener('DOMContentLoaded', function(){ /*code*/ }, false);
У Opera дела обстоят лучше, там обработку можно делать по ходу загрузки страницы, но есть свои подводные камни.
Код userscript'а запускается как код указанный в head, если я ничего не путаю, т.е. фактически сразу после инициализации страницы.
Для этого и используют что-то вроде while(! document.body){} и т.п. ;) И это позволяет обрабатывать элементы, как только они появляются в DOM, а не после окончательной загрузки всего дерева. Если этим уметь пользоваться, конечно =)
Некропостерство — зло, но добавлю, т.к. все гораздо проще:
GM_addStyle((<><![CDATA[
.pc_s .pc_img {width:150px; height:150px;}
#main {width:1192px;}
]]></>).toString());
Раз уж пост о Greasemonkey, то у меня есть вопрос. Как получить в GreaseMonkey доступ к Mootools если сайт использует этот фреймворк(например Хабр)?
Когда я писал UserJS для Хабра, то в Опере все работало $, $$ правильно интерпретировалися. Под Greasemonkey ну никак не понимало, что я от него хочу.
Пишем свой первый скрипт для Greasemonkey