Pull to refresh

Обновление пользовательских скриптов. Версия TBMS.

Reading time2 min
Views1.1K
Как я писал во вводной статье о 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), и массив названий для вложенных неймспейсов. Рассмотрим на примере:

GMHelper.getNamespace(window, ['Weborama', 'InlinePlayer']);


создаст неймспейс Weborama.InlinePlayer у window GreaseMonkey.

В заключении, хочу сказать, что будем рады любым замечаниям и предложениям и, в свою очередь, надеемся, что наш шаблон будет полезен.
Tags:
Hubs:
Total votes 10: ↑8 and ↓2+6
Comments2

Articles