在用户脚本(如Tampermonkey或Greasemonkey脚本)中,@include
和@match
都是元数据块(Metadata Block)中用来指定脚本应当在哪些网页上运行的关键指令。虽然它们的功能相似,但是它们的匹配模式和精确度有所不同。
@include
@include
指令允许使用通配符来定义脚本应当运行的页面。这种方式提供了较大的灵活性,但相对来说,可能会因匹配过宽泛而导致脚本在不应运行的页面上运行。
例子:
javascript// ==UserScript== // @name Example Script // @include http://*example.com/* // ==/UserScript==
在这个例子中,脚本将会在所有使用http
协议访问example.com
域名下的页面上运行,无论路径是什么。
@match
与@include
相比,@match
提供了更为精确的URL匹配模式。它不支持通配符,但可以使用特定的URL模式匹配语法来精确定义脚本应运行的页面。
例子:
javascript// ==UserScript== // @name Example Script // @match http://*example.com/* // ==/UserScript==
在此例中,@match
同样指示脚本在访问example.com
的页面上运行,但它使用的是更为标准化的模式匹配方式,更便于控制和避免误匹配。
总结
总的来说,@include
提供了更高的灵活性,适用于那些需要广泛匹配的场景,而@match
则提供了更高的精确性和标准化,适合需要精确控制脚本运行环境的场景。选择哪一种取决于具体的应用需求和对匹配控制的需求程度。在实际使用中,有些开发者会结合使用这两种指令,以利用各自的优点。
2024年8月15日 20:32 回复