GreaseSpot page on metadata blocks表示两者非常相似,但@match
“对*
字符的含义设定了更严格的规则。”然后GreaseSpot使用@include
进入teach,但this之类的Chrome示例通常似乎使用@match
,并表示@include
仅支持兼容性目的; @match
是首选。
Apparently,@include google.*
可以在google.evil.com上运行,@match google.*
则不能。
这个例子不足以真正看出通配符在这两者之间的表现如何不同,并且在这里的答案中寻求更好的解释。
新GreaseMonkey脚本(Firefox)默认使用@include
,而新的TamperMonkey脚本(例如Chrome)默认使用@match
。
这两者之间究竟有什么不同?
例如,每个人如何处理通配符?
跨浏览器兼容性是否存在差异?
有人选择使用一个而不是另一个有什么理由?
答案 0 :(得分:19)
当您使用@include can时,不能将正则表达式与@match一起使用。
但是,@ include会为您的用户提供有关应用于所有网站的脚本的更可靠的安全警告。
即使@include表达式允许您对脚本适用的网站更具限制性(例如,使用正则表达式片段指定URL的一部分为数字“[0-9] ] +“,或使用”^ https?://“将这两个方案应用于脚本,而不是用于@match中每个案例的更通用的非正则表达式运算符*,这会导致脚本适用范围更广)。