80

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

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

它甚至需要填写吗?

4

4 回答 4

77

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

因此,您应该提供一些您可以控制的 URL(即您拥有它或可以管理它),这基本上意味着“带有该 URL 的所有内容都属于我”。现在那些中央存储库可以区分foobarfromhttp://somesite.com/foobarfrom http://anothersite.com

基本操作不需要,但如果你想分享你的脚本,强烈建议。

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

于 2008-12-22T16:10:16.930 回答
20

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

例如,如果您有这样的脚本:

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


GM_setValue("key", "value");

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

油脂猴.scriptvals。http://example.com/脚本名称.key

注意格式:greasemonkey.scriptvalsnamespace. scriptname.key/variablename

于 2008-12-22T16:28:56.190 回答
11

一般来说,命名空间是一个抽象容器,它为它所拥有的项目(名称、技术术语或单词)提供上下文,并允许消除具有相同名称(位于不同命名空间中)的项目的歧义。

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

更具体的:

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

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

资料来源:潜入 Greasemonkey - 元数据

于 2008-12-22T16:10:57.893 回答
1

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

于 2015-09-03T21:56:00.980 回答