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 .
- Nach dem Anklicken wird die Seite wie gewünscht dekoriert, und der Werkzeug-Link wird entfernt.
- Wenn eine
id
im HTML-Dokument wiederholt wird, kann nur das erste Vorkommen angesprungen werden und alle weiteren sind unerreichbar. - Wenn eine Verlinkung innerhalb der Seite keine Zielmarke hat, wird davor # eingefügt.
- 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.
- Falls ein Strukturfehler erkannt wird, wird im Kopfbereich der Seite ein Warnhinweis eingefügt.
- 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.
- Einige Bezeichner funktionieren zwar, haben jedoch ein unerwünschtes Format; enthalten reservierte Zeichen usw.
- Standardmäßig wird nur der Inhaltsbereich dekoriert, während im konstanten Portal-Rahmen gültige Anker nicht markiert werden.
- Es kann konfiguriert werden, dass das gesamte HTML-Dokument dekoriert wird.
Installation
persönliche common.js, global.js etc. einfügen:
Folgende Zeile in diemw.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
Persönliche Anpassungen sind möglich.
CSS
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
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
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()
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()
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
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).