Перейти к основному содержимому

Блок метаданных

Содержимое внутри ==UserScript== описывает нужные скрипту разрешения, информацию о скрипте и т.д. Оно располагается в самом начале скрипта.

// ==UserScript==
// @name New Userscript
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.0
// @description try to take over the world!
// @author You
// @crontab * * once * *
// ==/UserScript==

Основные значения

name

Имя скрипта

namespace

Пространство имён скрипта. name + namespace определяет уникальность скрипта.

version

Версия скрипта. Рекомендуется следовать семантическому версионированию, чтобы при изменении версии пользователю предлагалось обновление и т.д.

description

Подробное описание скрипта

author

Автор скрипта

run-at

Когда запускается скрипт

ЗначениеЗапускПоддерживается с
document-startВнедряет скрипт на страницу, как только URL совпадает на фронтендеv0.3.0
document-endВнедряет скрипт после загрузки DOM; скрипты страницы и изображения ещё могут загружатьсяv0.3.0
document-idleВнедряет скрипт после полной загрузки всего содержимогоv0.3.0
document-bodyСкрипт внедряется только после появления элемента bodyv0.6.2
document-menuПоказывает меню по правому клику; при запуске скрипта в качестве имени меню используется имя скриптаv0.3.4-v0.9.4 (🔥 удалено)

Для иконок меню можно обратиться к Unicode Symbols и emoji.

run-in

Указывает окружение внедрения скрипта: @run-in normal-tabs для обычных вкладок, @run-in incognito-tabs для вкладок инкогнито.

early-start (v1.1.0+)

Когда run-at равен document-start, скрипт запускается как можно раньше, но всё равно не гарантирует загрузку быстрее страницы.

После объявления @run-at document-start можно добавить @early-start, чтобы скрипт загружался быстрее страницы: пример

inject-into

подсказка

В окружении content-script (content) unsafeWindow указывает только на собственный window окружения и не даёт доступ к window страницы.

ScriptCat не поддерживает автоматическую проверку ограничений CSP для выбора внедрения как content или page (т.е. @inject-into auto из Tampermonkey).

Указывает, куда внедряется скрипт: поддерживаются page и content, по умолчанию page.

  • page: скрипт внедряется в окружение страницы и может через unsafeWindow обращаться к window и DOM страницы
  • content: скрипт внедряется в окружение content-script, не может напрямую обращаться к объекту window страницы, но может работать с DOM страницы и не подчиняется CSP

storageName 🧪

Пространство хранения для Value; данные с одним и тем же storageName можно совместно использовать и обмениваться ими между скриптами. Специфично для ScriptCat.

background

Помечает скрипт как фоновый, которому нужно работать в фоновом окружении. Подробности: Фоновый скрипт.

crontab

Помечает скрипт как скрипт по расписанию; требуется значение cron-выражения. Допускается только одно cron-выражение; выполнение идёт по этому расписанию в фоновом окружении. Подробности: Скрипт по расписанию.

match

Скрипт запускается только для URL, совпадающих с match, по правилам Match patterns. В match * — подстановочный символ, tld соответствует домену верхнего уровня, а домен, начинающийся с *., также совпадает с xxx.com:

ЗначениеКорректные примерыНекорректные примеры
http://scriptcat.org/doc/matchhttp://scriptcat.org/doc/matchhttp://scriptcat.org/doc/runAt
*://*/param?*https://scriptcat.org/param | http://scriptcat.org/param?search=tampermonkeyhttps://scriptcat.org/test/param
*://*/prefix*suffixhttp://scriptcat.org/prefix/suffix | http://scriptcat.org/prefix/mid/suffix | http://scriptcat.org/prefixsuffixhttp://scriptcat.org/prefix/suffix/end
http*://scriptcat.org/*https://scriptcat.org/ | https://scriptcat.org/doc | http://scriptcat.org/doc/match | http://scriptcat.org/param?search=tampermonkeyhttps://doc.scriptcat.org/
http*://scriptcat.org/doc/*https://scriptcat.org/doc | http://scriptcat.org/doc/matchhttp://scriptcat.org/param?search=tampermonkey
http*://scriptcat.tld/doc/*https://scriptcat.cn/doc | http://scriptcat.net.cn/doc/matchhttp://google.com/param?search=tampermonkey
http*://*.scriptcat.org/doc/*https://scriptcat.cn/doc | http://www.scriptcat.net.cn/doc/matchhttp://google.com/param?search=tampermonkey

include

Поддерживает \* для нечёткого сопоставления, допускает нестандартные URL

exclude

URL, которые не должны совпадать; синтаксис выражений тот же, что у include

grant

Запрашивает разрешение API — API можно вызывать только после запроса. Список разрешений: Документация API и Документация CAT API.

Два особых значения:

  • none: скрипт не выполняется в песочнице, а напрямую в окружении страницы. В этом окружении GM API недоступны, но к объекту window страницы можно обращаться напрямую.
  • unsafeWindow: в песочнице для доступа к window страницы используйте unsafeWindow. (Tampermonkey не требует объявлять это — оставлено только для совместимости, что, честно говоря, не очень аккуратно.)

connect

Запрашивает разрешение доступа к сайту; см. GM_cookie и GM_xmlhttpRequest. GM_download в режиме native также учитывает @connect (необъявленные хосты вызывают запрос подтверждения, в отличие от Tampermonkey)

resource

Подключает файл ресурса. После объявления @resource информацию можно получить через GM_getResourceText/GM_getResourceURL.

// @resource icon https://bbs.tampermonkey.net.cn/favicon.ico
// @resource html https://bbs.tampermonkey.net.cn/
// @resource xml https://bbs.tampermonkey.net.cn/sitemap.xml
// Adding resource integrity verification
// @resource icon https://bbs.tampermonkey.net.cn/favicon.ico#md5-xxx,sha256-xxx

require

Подключает внешний JS-файл; поддерживает проверку целостности ресурса

require-css

Подключает внешний CSS-файл; поддерживает проверку целостности ресурса

noframes

Помечает, что скрипт не должен выполняться внутри <frame>

definition

Адрес ссылки на файл .d.ts, включающий подсказки автодополнения в редакторе

antifeature

Связано с маркетплейсом скриптов; нежелательные возможности нужно помечать этим описательным значением, например:

// @antifeature ads This script has ads
// @antifeature referral-link This script modifies or redirects to the author's referral link

Дополнительные описательные значения

license

Лицензия с открытым исходным кодом текущего скрипта

updateURL

Для проверки обновлений у удалённого скрипта должен быть тег @version.

Ссылка, по которой скрипт проверяет обновления; если не задана, по умолчанию используется user.js => meta.js ссылки либо текущая ссылка, если user.js нет.

Если настроен @updateURL, для его действия также нужно настроить @downloadURL.

downloadURL

Адрес загрузки обновления скрипта

supportURL

Сайт поддержки, страница сообщений об ошибках

homepage, homepageURL, website

Домашняя страница скрипта

source

Страница исходного кода скрипта

icon, iconURL, defaulticon

Иконка скрипта

icon64, icon64URL

Иконка скрипта размером 64x64

Примечания

Проверка целостности ресурса

  • Используйте md5, sha1, sha256, sha384 или sha512 для проверки ресурсов на подмену. Несколько методов проверки можно разделить ; или ,.
  • Согласно рекомендациям W3C, md5 и sha1 не рекомендуются; используйте sha384 или более сильный алгоритм хеширования.

Например:

// @require https://cdn.jsdelivr.net/npm/[email protected]/lib/darkmode-js.min.js#md5-d55836f30c097da753179f82fa6f108f,sha256-a476ab8560837a51938aa6e1720c8be87c2862b6221690e9de7ffac113811a90