Greasemonkey 命名空间有何用途?

问题描述 投票:0回答:4

我正在学习如何使用 Greasemonkey,并且想知道

@namespace
元数据 id 的用途。

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

还需要填写吗?

namespaces metadata greasemonkey userscripts
4个回答
90
投票

命名空间用于避免命名冲突。如果您将您的脚本称为

foobar
并且其他人也这样做,那么中央存储库将很难区分它们。

因此,您应该提供一些您控制的 URL(即您拥有它或可以管理它),这基本上意味着“具有该 URL 的所有内容都由我负责”。现在,这些中央存储库可以区分

foobar
http://somesite.com/
以及
foobar
http://anothersite.com

对于基本操作来说不是必需的,但如果您想分享您的脚本,强烈建议这样做。

请记住,

mailto:[email protected]
也是一个有效的 URL,当您不拥有或控制自己的域时,可能是一个可能的选项。


22
投票

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

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

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


GM_setValue("key", "value");

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

greasemonkey.scriptvals.http://example.com/Script Name.key

注意格式:greasemonkey.scriptvals

namespace
scriptname
key/variablename


10
投票

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

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

更具体:

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

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

来源:深入了解 Greasemonkey - 元数据


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.