Wofür wird der Greasemonkey-Namespace benötigt?


71

Ich lerne, wie man Greasemonkey benutzt, und habe mich gefragt, wozu die @namespaceMetadaten-ID dient.

Muss es eine Webadresse sein? Oder kann es ein Ordner / Verzeichnis auf meinem Computer sein?

Muss es überhaupt ausgefüllt werden?

Antworten:


71

Ein Namespace wird verwendet, um Namenskollisionen zu vermeiden. Wenn Sie Ihr Skript aufrufen foobarund dies auch jemand anderes tut, fällt es zentralen Repositorys schwer, sie auseinander zu halten.

Daher sollten Sie eine URL angeben, die Sie steuern (dh Sie besitzen sie oder können sie verwalten), was im Grunde bedeutet, dass "alles mit dieser URL von mir stammt". Jetzt können diese zentralen Repositories zwischen foobarvon http://somesite.com/und foobarvon unterscheiden http://anothersite.com.

Dies ist für den Basisbetrieb nicht erforderlich, wird jedoch dringend empfohlen, wenn Sie Ihre Skripte freigeben möchten.

Beachten Sie, dass dies mailto:someone@example.comauch eine gültige URL ist und eine mögliche Option sein kann, wenn Sie keine eigene Domain besitzen oder kontrollieren.


3
@GrantThomas: Laut diesem Wiki : "Während der Namespace nicht semantisch ist, wird häufig eine URL verwendet." Nein, es muss keine URL sein, aber eine URL, die Sie "besitzen", ist eine einfache Möglichkeit, um sicherzustellen, dass der Wert eindeutig ist.
Joachim Sauer

Vielen Dank. Ich kaufe immer Domains, benutze sie eine Weile und lasse sie dann los. Ich habe sogar das gleiche Problem bei der Entscheidung über Nicht-URL-Namespaces, wie in .NET-APIs - aber das ist ein anderes Problem und nicht halb so problematisch, wenn Sie eine URL erstellen, die Sie nicht besitzen, die Sie aber für "sicher" halten. Danke noch einmal.
Grant Thomas

3
@GrantThomas: Sie können beispielsweise Ihre E-Mail-Adresse (oder sogar eine mailto:URI, wenn Sie daraus eine URL machen möchten) verwenden.
Joachim Sauer

Das scheint eigentlich eine gute Idee zu sein.
Grant Thomas

1
@ Joachim Sauer Greasyfork hat mich gewarnt, als ich versuchte, das Skript mit einem neuen Namespace zu speichern, also habe ich es abgebrochen. Ok, dann lasse ich es einfach so wie es ist. Danke für die Antwort.
Christhofer Natalius

18

Ein Ort, an dem Sie den praktischen Effekt von Namespaces sehen können, ist das Speichern von Einstellungen. Nampsaces werden verwendet, um Skripte für skriptspezifische gespeicherte Einstellungen eindeutig zu identifizieren.

Wenn Sie beispielsweise ein Skript wie dieses haben:

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


GM_setValue("key", "value");

Das würde in Ihren Einstellungen gespeichert (zugänglich in prefs.js und about: config) wie folgt:

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

Beachten Sie das Format: greasemonkey.scriptvals . namespace. scriptname.key/variablename


Ah, ich fand dein '*' in der @ include-Zeile sehr hilfreich, danke.
Adam F

10

Im Allgemeinen ist ein Namespace ein abstrakter Container, der den Kontext für die darin enthaltenen Elemente (Namen oder Fachbegriffe oder Wörter) bereitstellt und die Disambiguierung von Elementen mit demselben Namen ermöglicht (die sich in verschiedenen Namespaces befinden).

Quelle: Namespace - Wikipedia

Und genauer:

Dies ist eine URL, die von Greasemonkey verwendet wird, um Benutzerskripte zu unterscheiden, die denselben Namen haben, aber von verschiedenen Autoren geschrieben wurden. Wenn Sie einen Domainnamen haben, können Sie ihn (oder ein Unterverzeichnis) als Namespace verwenden. Andernfalls können Sie ein Tag verwenden: URI.

@namespace ist optional. Wenn vorhanden, wird es möglicherweise nur einmal angezeigt. Wenn nicht vorhanden, wird standardmäßig die Domäne verwendet, von der der Benutzer das Benutzerskript heruntergeladen hat.

Quelle: Tauchen Sie ein in Greasemonkey - Metadaten


toter Link: diveintogreasemonkey.org/helloworld/metadata.html (Tauchen Sie ein in Greasemonkey - Metadaten)
Awaaaaarghhh

1

Der Namespace kann eine URL sein, aber nicht nur. Sie können einige Wörter als Benutzernamen oder echten Namen als Namespace verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.