Greasemonkey名称空间需要什么?


71

我正在学习如何使用Greasemonkey,并且想知道@namespace元数据ID的用途。

它必须是网址吗?还是它可以是我计算机上的文件夹/目录?

甚至需要填写吗?

Answers:


71

名称空间用于避免命名冲突。如果您调用脚本foobar并且其他人也这样做,那么中央存储库将很难区分它们。

因此,您应该提供一些您可以控制的URL(即您拥有它或可以对其进行管理),该URL基本上意味着“该URL的所有内容都是我本人”。现在,这些中央存储库可以区分foobarhttp://somesite.com/foobarhttp://anothersite.com

基本操作不是必需的,但是如果要共享脚本,强烈建议使用。

请记住,这mailto:someone@example.com也是一个有效的URL,当您不拥有或控制自己的域时,这可能是一个可能的选择。


3
@GrantThomas:根据此Wiki:“尽管名称空间是非语义的,但经常使用URL。” 因此,不需要,它不必是URL,但是您“拥有”的URL是保证值唯一的简单方法。
约阿希姆·绍尔

谢谢。我只是一直在购买域名,使用一段时间,然后放手。在决定非URL命名空间时,甚至在.NET API中,我什至遇到相同的问题-但这是一个不同的问题,而组成一个您不拥有但认为只是“安全”的URL的问题就不那么多了。再次感谢。
格兰·托马斯

3
@GrantThomas:例如,您可以使用您的电子邮件地址(甚至是mailto:URI,如果您想使其成为URL)。
Joachim Sauer 2013年

这实际上似乎是一个好主意。
格兰特·托马斯

1
@Joachim Sauer Greasyfork在尝试使用新名称空间保存脚本时警告我,因此取消了它。好的,那我就照原样了。感谢你的回答。
Christhofer Natalius

18

您可以看到名称空间的实际效果的一个地方是存储首选项。namapaces用于为任何特定于脚本的存储首选项唯一地标识脚本。

例如,如果您具有如下脚本:

// ==UserScript==
// @name            Script Name
// @namespace       http://example.com
// @include         *
// ==/UserScript==


GM_setValue("key", "value");

它将存储在您的首选项中(可在prefs.js和about:config中访问),如下所示:

油腻的monkey.scriptvals。http://example.com/Script Name.key

请注意以下格式:buttermonkey.scriptvalsnamespacescriptnamekey/variablename


啊,我发现@include行上的'*'非常有用,谢谢。
亚当F

10

通常,名称空间是一个抽象容器,提供了其所拥有的项目(名称,技术术语或词语)的上下文,并允许对具有相同名称(位于不同名称空间中)的项目进行歧义消除。

资料来源:命名空间-维基百科

以及更具体的:

这是一个URL,Greasemonkey使用它来区分名称相同但由不同作者编写的用户脚本。如果您拥有域名,则可以使用它(或子目录)作为名称空间。否则,您可以使用标签:URI。

@namespace是可选的。如果存在,它只能出现一次。如果不存在,则默认为用户从中下载用户脚本的域。

资料来源:Dive Into Greasemonkey-元数据


无效

1

命名空间可以是URL,但不仅可以是URL。您可以使用一些单词作为名称空间作为用户名或真实名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.