Как я писал во вводной статье о GreaseMonkey, недовольные отсутствием системы обновлений для пользовательских скриптов, мы взяли вопрос в разработку. Через несколько дней решение материализовалось в некий комплексный инструмент, названный нами «Генератор шаблонов скриптов для GreaseMonkey». Его интерфейс доступен по ссылке tbms.ru/greasemonkey/generator
Генератор создает заготовку пользовательского скрипта, в которую помимо всей необходимой метаинформации встроен объект GMHelper, который реализует систему обновления и еще несколько полезных функций.
Основной функцией GMHelper является обновление скрипта. Весь функционал уже встроен в шаблон, единственное что вам надо сделать — это указать валидную ссылку на место хранения JS-файла со скриптом (через генератор) и следить за нумерацией версий в процессе разработки. Раз в 24 часа GMHelper скачивает первый килобайт из JS-файла по ссылке и смотрит не изменилась ли там версия, в случае изменения предлагает скачать. Если вы отказываетесь, то оставляет вас в покое еще на 24 часа.
В ходе разработки у GMHelper появилось еще несколько полезных, на наш взгляд, функций. Во первых мы завернули GM_getValue/GM_setValue в оболочки GMHelper.getValue/setValue. Это решает две проблемы: проверку на доступность GM (если вы делаете кроссбраузерный скрипт) и конвертацию неподдерживаемых типов при записи (попытка записать Date через GM_setValue вызывает ошибку).
Ну и для порядка, мы поместили генератор JS-неймспесов getNamespace, который принимает параметром нужное window (привет unsafeWindow), и массив названий для вложенных неймспейсов. Рассмотрим на примере:
создаст неймспейс Weborama.InlinePlayer у window GreaseMonkey.
В заключении, хочу сказать, что будем рады любым замечаниям и предложениям и, в свою очередь, надеемся, что наш шаблон будет полезен.
Генератор создает заготовку пользовательского скрипта, в которую помимо всей необходимой метаинформации встроен объект GMHelper, который реализует систему обновления и еще несколько полезных функций.
Основной функцией GMHelper является обновление скрипта. Весь функционал уже встроен в шаблон, единственное что вам надо сделать — это указать валидную ссылку на место хранения JS-файла со скриптом (через генератор) и следить за нумерацией версий в процессе разработки. Раз в 24 часа GMHelper скачивает первый килобайт из JS-файла по ссылке и смотрит не изменилась ли там версия, в случае изменения предлагает скачать. Если вы отказываетесь, то оставляет вас в покое еще на 24 часа.
В ходе разработки у GMHelper появилось еще несколько полезных, на наш взгляд, функций. Во первых мы завернули GM_getValue/GM_setValue в оболочки GMHelper.getValue/setValue. Это решает две проблемы: проверку на доступность GM (если вы делаете кроссбраузерный скрипт) и конвертацию неподдерживаемых типов при записи (попытка записать Date через GM_setValue вызывает ошибку).
Ну и для порядка, мы поместили генератор JS-неймспесов getNamespace, который принимает параметром нужное window (привет unsafeWindow), и массив названий для вложенных неймспейсов. Рассмотрим на примере:
GMHelper.getNamespace(window, ['Weborama', 'InlinePlayer']);
создаст неймспейс Weborama.InlinePlayer у window GreaseMonkey.
В заключении, хочу сказать, что будем рады любым замечаниям и предложениям и, в свою очередь, надеемся, что наш шаблон будет полезен.