Benutzer:PerfektesChaos/js/fragmentAnchors
JavaScript-Benutzerskript, das vorhandene Anker im HTML-Dokument anzeigt und darauf aufmerksam macht, falls solche mehrfach vergeben wurden oder sonstwie inkonsistent sind:
- Zeige ein bei allen Positionen, wo ein sichtbares Element angesprungen werden kann.
- Der Name des Bezeichners wird vorübergehend als Tooltip unterhalb des angezeigt, wenn der Mauszeiger darüber schwebt.
- Der Bezeichner wird dekodiert und in menschenlesbares Format („Name“) überführt.
- Das kann angeklickt werden und zeigt dauerhaft unterhalb des Symbols die Wikisyntax für einen internen Link zu dieser Stelle. Dies kann mit Copy&Paste übernommen werden. Ein zweiter Klick schaltet diese Anzeige wieder ab.
- Um die Seiten schneller aufbauen zu können, läuft die Ausstattung nicht automatisch.
- In der Werkzeugbox (gewöhnlich in der linken Spalte des Portals) wird zunächst nur ein Link angeboten, mit dem gleichen .
id
im HTML-Dokument wiederholt wird, kann nur das erste Vorkommen angesprungen werden und alle weiteren sind unerreichbar.
- Das ist jedoch nur in der Gesamt-Seitenansicht möglich; nicht bei der Vorschau von vielleicht lediglich abschnittsweiser Bearbeitung.
- Wenn eine innere Verlinkung mehrfach definierte Sprungmarken zum Ziel hat (bereits mit markiert), so ist ungewiss, welche davon ursprünglich gemeint war. Deshalb werden die Verlinkungen darauf ebenfalls als ungültig markiert.
- Mehrfach definierte Sprungmarken werden aufgezählt, wobei die Gesamthäufigkeit vorangestellt wird.
- Fehlende Sprungadressen werden aufgezählt, wobei die Zahl der Verlinkungen mit Minuszeichen vorangestellt wird.
- Es kann konfiguriert werden, dass das gesamte HTML-Dokument dekoriert wird.
Installation
[Bearbeiten | Quelltext bearbeiten]Folgende Zeile in die persönlichen JS-Einstellungen einfügen:
mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/fragmentAnchors/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript" );
Nicht angemeldete Benutzer können das Skript mittels Greasemonkey einbinden.
Benutzerkonfiguration
[Bearbeiten | Quelltext bearbeiten]Persönliche Anpassungen sind möglich.
CSS
[Bearbeiten | Quelltext bearbeiten]Das optische Erscheinungsbild kann durch CSS geändert werden.
Die folgenden Selektoren werden bereitgestellt:
.fragmentAnchors-mark
– alle eingefügten Elemente.error-repeated-id
– Symbole bei mehrfachenid
.fragmentAnchors-inner
– alle seiteninternen Verlinkungen.fragmentAnchors-broken
– alle seiteninternen Verlinkungen ohne Ziel#fragmentAnchors-errors
– Zusammenfassung bei Strukturfehlern.error
– Zusammenfassung bei Strukturfehlern
Konfiguration über JavaScript
[Bearbeiten | Quelltext bearbeiten]In die common.js, global.js etc. die folgenden Zeilen einfügen (möglichst vor mw.loader.load, so vorhanden):
if ( typeof mw.libs.fragmentAnchors !== "object" ) {
mw.libs.fragmentAnchors = { };
}
Danach sind zurzeit drei Optionen konfigurierbar:
mw.libs.fragmentAnchors.large = true;
Daraufhin wird die gesamte HTML-Seite dekoriert und nicht nur der Inhaltsbereich.
mw.libs.fragmentAnchors.launch = true;
Das löst nach dem Laden die sofortige Dekoration der Seite aus, ohne einen Link in der Werkzeugbox zu generieren. Es wird unterstellt, dass das Laden des Skriptes durch geeignete Bedingungen eingeschränkt wird.
mw.libs.fragmentAnchors.lock = true;
Dies verhindert die Generierung eines Links in der Werkzeugbox und gibt Gelegenheit, die Merhoden .fetch() und .fire() aufzurufen.
API
[Bearbeiten | Quelltext bearbeiten]Nach Auslösen des mw.hook
fragmentAnchors.ready
kann eine Funktion aufgerufen werden. Dabei ist der von mw.hook
übergebene Parameter das Anwendungsobjekt und müsste mit mw.libs.fragmentAnchors
identisch sein.
Funktionen sind Komponenten des Anwendungsobjekts.
.fetch()
[Bearbeiten | Quelltext bearbeiten]Ermittle alle Fragmente im HTML-Dokument (jeweils beginnend mit #
und nicht dekodiert).
Aufruf | .fetch()
| ||
---|---|---|---|
Rückgabewert |
|
Das Dokument wird nicht dekoriert, ausgenommen an Stellen aufgefundener Fehler.
.fire()
[Bearbeiten | Quelltext bearbeiten]Dekoration der Seite durch externen Befehl auslösen.
Aufruf | .fire()
| ||
---|---|---|---|
Rückgabewert |
|
Sollte zuvor .lock = true;
deklarieren, falls der Link in der Werkzeugbox unerwünscht ist.
Codes
[Bearbeiten | Quelltext bearbeiten]Quellcode | Siehe Dokumentation in der englischsprachigen Wikipedia. |
ResourceLoader |
|
Namensräume | Alle. |
mw.libs
|
fragmentAnchors
|
mw.hook
|
fragmentAnchors.ready Wenn die Seite miit dem Werkzeuglink ausgestattet wurde, oder sonst bereit zur Dekoration ist. |
Testprozedur zur Prüfung auf Erfüllung der Grundfunktionalität (englisch).