Для чего нужно пространство имен Greasemonkey? - PullRequest
55 голосов
/ 22 декабря 2008

Я изучаю, как использовать Greasemonkey, и мне было интересно, для чего нужен идентификатор метаданных @namespace.

Это должен быть веб-адрес? Или это может быть папка / каталог на моем компьютере?

Нужно ли его заполнять?

Ответы [ 4 ]

52 голосов
/ 22 декабря 2008

Используется, чтобы избежать коллизий имен. Если бы вы назвали свой сценарий foobar, а кто-то другой сделал то же самое, то центральным хранилищам было бы трудно узнать их отдельно.

Поэтому вы должны предоставить какой-то URL-адрес, которым вы управляете (то есть вы владеете им или можете управлять им), что в основном означает «все, что с этим URL-адресом, принадлежит мне». Теперь эти центральные репозитории могут различать foobar от http://somesite.com/ и foobar от http://anothersite.com.

Это не обязательно для базовой операции, но настоятельно рекомендуется, если вы хотите поделиться своими сценариями.

13 голосов
/ 22 декабря 2008

В одном месте вы можете увидеть практический эффект пространства имен в хранении настроек. Nampsaces используются для уникальной идентификации сценариев для любых сохраненных предпочтений конкретного сценария.

Например, если у вас есть такой скрипт:

// ==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

9 голосов
/ 22 декабря 2008

Как правило, пространство имен - это абстрактный контейнер, предоставляющий контекст для элементов (имен, технических терминов или слов), которые он содержит, и позволяющий устранять неоднозначность для элементов с одинаковыми именами (находящихся в разных пространствах имен).

Источник: Пространство имен - Википедия

И более конкретно:

Это URL, и Greasemonkey использует его для различения пользовательских сценариев, которые имеют одинаковые имена, но написаны разными авторами. Если у вас есть доменное имя, вы можете использовать его (или подкаталог) в качестве пространства имен. В противном случае вы можете использовать тег: URI.

@ namespace является необязательным. Если он присутствует, он может появиться только один раз. Если он отсутствует, по умолчанию используется домен, из которого пользователь загрузил сценарий пользователя.

Источник: Погружение в Обезьяну - Метаданные

1 голос
/ 04 сентября 2015

Пространство имен может быть URL-адресом, но не только. Вы можете использовать в качестве пространства имен некоторые слова в качестве своего имени пользователя или настоящего имени.

...