В чем разница между @include и @match в userscripts?
на страница GreaseSpot на блоках метаданных говорит, что эти два очень похожи, но @match
"устанавливает более строгие правила о том, что *
символ означает."GreaseSpot затем переходит к научить используя @include
, но примеры Chrome, такие как этой обычно, кажется, используют @match
и свидетельствуют о том, что @include
поддерживается только для совместимости; @match
предпочтительнее.
видимо, @include google.*
может работать на google.evil.com в то время как @match google.*
не может.
Этого одного примера недостаточно, чтобы действительно увидеть, как подстановочные знаки ведут себя по-разному между этими двумя, и лучшие объяснения ищутся в ответах здесь.
новые скрипты GreaseMonkey (Firefox) использовать @include
по умолчанию, в то время как новые сценарии TamperMonkey (например, Chrome) используют @match
по умолчанию.
каковы именно различия между этими двумя?
например, как каждый из них обрабатывает подстановочные знаки?
Существуют ли различия в кросс-браузерной совместимости?
Какие причины у кого-то могут быть для выбора использования одного над другим?
1 ответов
вы не можете использовать регулярные выражения с @match, в то время как вы can С @include.
однако @include даст вашим пользователям более страшные предупреждения безопасности о применении скрипта ко всем сайтам.
Это даже если выражение @include позволяет вам быть более строгим о сайтах, к которым применяется скрипт (например, указание, что часть URL-адреса должна быть числовой, используя фрагмент regex " [0-9]+" или используя "^https?: / / "применять к script только эти две схемы, а не более общий оператор глобирования без регулярных выражений*, используемый для каждого из этих случаев в @match, что заставляет скрипт применяться более широко).