Подтвердить что ты не робот

В чем разница между @include и @match в пользовательских сценариях?

страница GreaseSpot на блоках метаданных говорит, что эти два очень похожи, но @match "устанавливает более строгие правила того, что * символ означает". Затем GreaseSpot переходит к преподавать с помощью @include, но примеры Chrome, такие как это, как правило, используют @match и указывают, что @include поддерживается только для целей совместимости; @match является предпочтительным.

Видно, @include google.* может работать на google.evil.com, а @match google.* не может.
Этот один пример недостаточен, чтобы действительно увидеть, как подстановочные знаки ведут себя по-разному между этими двумя, и более подробные объяснения запрашиваются здесь.

Новые сценарии GreaseMonkey (Firefox) используют @include по умолчанию, а новые скрипты TamperMonkey (например, Chrome) по умолчанию используют @match.

В чем именно отличия между этими двумя?

Например, как каждый обрабатывает подстановочные знаки?
Существуют ли различия в совместимости между браузерами?
Какие причины у кого-то есть для выбора одного из них?

4b9b3361

Ответ 1

Вы не можете использовать регулярные выражения с @match, а может с помощью @include.

Тем не менее, @include даст вашим пользователям более страшные предупреждения безопасности о script, применимые ко всем сайтам.

Это даже несмотря на то, что выражение @include позволяет вам более ограничивать сайты, к которым применяется script (например, указать, что часть URL-адреса является числовой, с использованием фрагмента регулярного выражения "[0-9] +" или используя "^ https?://", чтобы применить к script только эти две схемы, вместо более общего оператора non-regex globbing *, используемого для каждого из этих случаев в @match, что приводит к применению script в более широком смысле).