Wikipedia:Technik/Skin/JS/mw

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

mw-Objekt


Diese Seite beschreibt das Objekt mw für die JavaScript-Programmierung. Es steht ab MediaWiki 1.17 (Februar 2011) zur Verfügung und wird ständig weiterentwickelt.

Dokumentiert werden Funktionen, die für Benutzer zugreifbar und auch einsetzbar sind.

Zusätzlich werden alle bekanntgewordenen Komponenten des mw-Objekts vermerkt, auch wenn sie für Benutzer nicht nutzbar sind.

Das Objekt mw soll die Vielzahl der im allgemeinen JS-Namensraum (Eigenschaft des Standard-Browser-JS-Objektes window) herumgeisternden Variablen (und damit Funktionen) beschränken und besser stukturieren. Damit können auch Namenskonflikte zwischen Skripten unterschiedlicher Herkunft vermieden werden, und zusammengehörende Werte können beim Debuggen leicht erkannt werden. Aus der Komponente kann auch zurückgeschlossen werden, aus welchem Paket die Funktion stammt.

Als .legacy.wikibits und andere werden die bisherigen Funktionen für eine Übergangszeit geladen.

Name des Objekts

[Quelltext bearbeiten]

Der Name des Objekts mw sollte immer in der Kurzform benutzt werden, um es bei der Suche nach Zeichenketten leicht auffinden zu können. Außerdem werden dadurch die Programmzeilen kürzer.

Daneben gibt es noch eine Variable mediaWiki mit stets identischem Inhalt. Als Rückfallposition ließe sich mediaWiki zur Wiederherstellung benutzen, falls in einem älteren Skript durch Namenskonflikt auf mw nicht zugegriffen werden kann.

Bei der Bildung einer closure wird das signifikantere mediaWiki regelmäßig zusammen mit jQuery angewendet und auf die selbstdefinierten lokalen Variablen mw und $ abgebildet:

( function ( mw, $ ) {
   "use strict";
   // ...
   // ...
}( window.mediaWiki, window.jQuery ) );

Das Objekt mw wie auch mediaWiki ist eine Eigenschaft des Objektes window und damit eindeutig in der aktuellen Seite, auch wenn sich bei asynchroner Bearbeitung mehrere Instanzen ergeben.

Auf dieser Seite steht ein führender Punkt vor einem Objektnamen wahlweise für mw. oder mediaWiki. – falls nicht Eigenschaft eines benutzerdefinierten Objekts.

Ladezeitpunkt

[Quelltext bearbeiten]

Das Objekt mw wird durch den sogenannten ResourceLoader definiert; gleichzeitig bereits eine Reihe seiner Komponenten.

Manche Komponenten sind erst definiert, wenn auf besondere Anforderung deren Module hinzugeladen werden.

Andere Module (2012 etwa .util) gehören zwar zum Kernprogramm, sind aber möglicherweise in einem Skript nicht sofort verfügbar. Das liegt daran, dass moderne Browser mehrere Ressourcen gleichzeitig („asynchron“) und nicht nacheinander laden. Mit .loader.using() lässt sich sicherstellen, dass Funktionen erst dann ausgeführt werden, nachdem das zugehörige Modul geladen worden war.

Basis-Objekt

[Quelltext bearbeiten]

Immer mit dem Laden einer Wiki-Seite war bereits das Objekt mit einigen Basisfunktionen definiert; zu diesen gehört der ResourceLoader zum Nachladen weiterer Software und die Verwaltung der Konfigurationsvariablen.

Quellcode:

Komponenten

[Quelltext bearbeiten]

Unmittelbare Komponenten

[Quelltext bearbeiten]

Siehe auch MwEmbed.

.format( arg0, arg1, arg2, arg3, … )

  • Ersetze in der Zeichenkette arg0 die $1, $2, $3 durch arg1, arg2, arg3.
  • base.js – Definition

Siehe .hook.

Siehe .log.

Siehe .messages.

Siehe .messages.

Kurze Nachricht(en) von geringer Bedeutung für einige Sekunden im Kopfbereich der HTML-Seite (unter der Seitenüberschrift) anzeigen oder löschen. Dies wird üblicherweise zur Bestätigung von Aktionen benutzt.

.notify(text, options)
mediawiki.notification wird bei Bedarf nachgeladen (mw.plugin.notify).
Tatsächlich wird dann die Funktion .notification.notify() ausgeführt.

Millisekunden seit 1970-01-01 als Gleitkommazahl.

  • Soweit möglich ohne Wiederholung des gleichen Werts für die Mikrosekunden.

Funktionen, um Debuggern und Analysewerkzeugen die Rückverfolgung zu erleichtern und etwa an Firebug Zusatzinformationen zu übermitteln.

.trackSubscribe()

[Quelltext bearbeiten]

Siehe .track().

.trackUnsubscribe()

[Quelltext bearbeiten]

Siehe .track().

Unterstützung von bestimmten Aktivitäten auf Seiten.

  • Nur dann automatisch geladen, und nur in diesem Kontext sinnvoll nutzbar.
  • resources/src/mediawiki.action
  • Das nächste Segment im Namen gibt die action= der URL an, wobei submit von edit abgedeckt wird.

.activeCampaigns

[Quelltext bearbeiten]

interne Verwendung

Klasse für vereinfachte API-Abfragen; alle Einzelheiten siehe JS/API.

.centralNotice

[Quelltext bearbeiten]

System zur Anzeige der weltweit gesteuerten Benachrichtigungs-Banner.

Lokalisierungsfunktionen: Wikipedia:Technik/MediaWiki/Sprachen #cldr

.cldr.getPluralForm()

Konfigurationsvariable auslesen. Siehe dort.

  • Diese Komponente ist unmittelbar nach dem ResourceLoader definiert und damit für andere Skripte verfügbar.
  • Die volatilen Daten der aktuellen Seite haben keine Modulbezeichnung.
.config.get()
Wichtigste Funktion für Benutzer.
Sollte bei Überarbeitung und Neuprogrammierung statt der direkten Nutzung als globale Variable benutzt werden.

Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.

.cookie.get(key, prefix, defaultValue)
Wert abfragen
.cookie.set(key, value, options)
Wert setzen oder Cookie entfernen
options kann prefix, domain, path, expires, secure enthalten

Debug toolbar.

Nicht für reguläre Projekte vorgesehen; eher für Test-Projekte.

Erst in Localsettings.php zu aktivieren oder mittels .loader zu laden.

Ein debug toolbar kann für das Projekt durch $wgDebugToolbar verfügbar gemacht werden.
.echo.clickThroughEnabled
  • true
.echo.desktop
  • .appendUseLang()
.echo.dismiss()
nicht immer gesetzt, oder nicht mehr aktiv
.echo.dismissOutputFormats[]
  • [ "email", "web" ]
nicht immer gesetzt, oder nicht mehr aktiv
.echo.optionsToken
nicht immer gesetzt, oder nicht mehr aktiv
.echo.overlay
  • .configuration
    • .max-notification-count
      99
    • .notification-count
      "1" – Aktuelle Zahl der ungelesenen Benachrichtigungen
    • .buildOverlay()
    • .removeOverlay()
    • .updateCount()
  • .logInteraction()
  • .setupNotificationLogging()
.echo.setOptionsToken()
nicht immer gesetzt, oder nicht mehr aktiv
.echo.setUpDismissability()
nicht immer gesetzt, oder nicht mehr aktiv
.echo.showDismissOption()
nicht immer gesetzt, oder nicht mehr aktiv

Wurde offenbar für clicktracking benutzt; langfristig gesicherte Verfügbarkeit nicht dokumentiert. Wird regelmäßig von den Entwicklern verwendet, um zu überprüfen, wann wie oft von welchen Benutzern die MW-Features benutzt und wo wann angeklickt werden.

  • Beispiel für Echo: wgEchoConfig.version, wgUserId, wgUserEditCount werden den Entwicklern übermittelt; dazu die Art und Uhrzeit jedes Klicks.

Modul: mw:Extension:eventLogging

.experiments

[Quelltext bearbeiten]

Was auch immer.

.experiments.getBucket( experiment, token )

Collecting user feedback on a wiki page

Dient dazu, dass Benutzer bei der Verwendung des Upload-Wizards eine Rückmeldung geben können.

Erst mittels .loader zu laden.

Schnittstelle zur API eines anderen Wiki.

Unterstützung für Geführte Touren.

Infrastruktur für Hook-Funktionen (callback).

Ab 2013 begann dies, auf Wiki-Projekten wirksam zu werden.[1] Unter anderem Namen könnten einige aus der PHP-Welt verwendbar sein.

Vorgesehen ist, dass in bestimmten Situationen im Aufbau der Wiki-Seite standardisierte Ereignisse ausgelöst werden; Extensionen und Gadgets können davon Gebrauch machen sowie selbstdefinierte Ereignisse hinzufügen. Während etwa das Ereignis document.ready nur einmal beim ersten Aufbau des HTML-Dokuments ausgelöst wird, kann es sinnvoll sein, spätere Ereignisse innerhalb des HTML-Dokuments auszulösen (etwa nach Aktualisierung des Inhalts mittels LivePreview).

Diese Komponente ist bereits mit dem ResourceLoader definiert.

Mit den Parametern name als string und handler als Funktion sind verwendbar:

.hook(name)
Objekt aus jQuery.Callbacks() für name.
Damit sind verfügbar:
h.add(handler)
Registriere eine Callback-Funktion.
Wenn eine Funktion registriert wird, nachdem das Ereignis name bereits stattgefunden hatte, wird die Funktion sofort ausgelöst.
h.remove(handler)
Entferne eine Registrierung.
h.fire(options)
Löse das Ereignis aus.
An den handler wird das optionale options übergeben.
Somit ist folgende Form möglich:
meinHaken = mw.hook( "mein.tag" );
meinHaken.add( meineFunktion );
Bekanntgeworden
(unter Vorbehalt)
name Ereignis Auslöser Status Bemerkung
wikipage.content Wenn .util.$content verfügbar oder $content aktualisiert wurde.[2] .util.init() stabil
wikipage.collapsibleContent Wenn mw-collapsible fertig initialisiert wurde. jquery.makeCollapsible stabil
wikipage.categories Alle Kategorie-Verlinkungen wurden zum DOM hinzugefügt.
wikipage.diff /RevisionSlider – löst aus, nachdem Inhalt geändert
wikipage.editform Ein Bearbeitungsfeld wurde verfügbar.[3]
wikipage.languages Alle Sprachversions-Verlinkungen wurden zum DOM hinzugefügt.
codeEditor.configure Wenn CodeEditor konfiguriert ist.
CodeMirror.enabled Parameter ist cm = app
CodeMirror.disabled Parameter ist cm = app
ext.echo.overlay.beforeShowingOverlay Bevor der Echo-Meldungszähler gezeigt wird.
LivePreviewPrepare Wenn LivePreview konfiguriert wird. 2014 entfernt, Gerrit:131346
postEdit Nach dem Speichern einer Seitenänderung. postEdit.js
postEdit.afterRemoval Nachdem die postEdit-Benachrichtigung entfernt wurde.
resourceloader.loadEnd (nur intern) Nachdem alle serverseitig mit der Seite verbundenen Module geladen wurden. bis 2018-06
ve.activationComplete Nachdem die Aktivierung des VisualEditor abgeschlossen wurde.
ve.deactivate Nachdem der VisualEditor deaktiviert wurde, also derEditiermodus verlassen wurde.

HTML-Zeichenketten einfügen.

.html.escape(s)
Ersetzt Zeichen, die in HTML/XML eine besondere Bedeutung haben, durch entsprechende Entitäten:
< > ' & "   →   &lt; &gt; &#039; &amp; &quot;
.html.element(name, attrs, contents)
Erzeugt den Quelltext für ein HTML-Element.
  • name: Name des Tags
    • "span"
  • attrs: Attribute mit Wert als Objekt
    • { HTMLattr: Wert }
  • contents: (optional) Inhalt; kann neben string auch number oder boolean sein.
    • HTML-Syntax im Inhalt wird so mit .html.escape() kodiert, dass er erscheint wie angegeben. Die Angabe für contents kann mit html.Cdata() oder html.Raw() gegen diese Konvertierung geschützt werden.
.html.Cdata
Wrapper object for CDATA element contents
.html.Raw
Wrapper object for raw HTML

Hilfsfunktionen für Elemente eines HTML-Formulars (experimentell)

Input Method Editor für den mw:Universal Language Selector; seit Juli 2013 weltweit aktiviert. Zusammen mit .uls aktiv; Gadget für Input-Elemente.

Zahlreiche Hilfsfunktionen für das Debugging der Module (welche sind mit welchen Eigenschaften geladen) und Konsolen-Log.

  • base.js – Objektkonstruktion
  • Das Modul mediawiki.inspect muss nicht gesondert geladen werden, falls die Funktion mw.inspect() aufgerufen wird.
.inspect.auditSelectors()
.inspect.dumpTable()
.inspect.getDependencyGraph()
.inspect.getLoadedModules()
.inspect.getModuleSize()
.inspect.grep()
p = CSS-Selektor: Einfügendes Modul identifizieren
p = Name einer Variable/Komponente: Verwendende Module identifizieren
.inspect.runReports()
  • (optional) Array aus Zeichenketten
.inspect.reports.css()
Für jedes Modul mit styles ermittle die Anzahl der Selektoren, und zähle wie viele davon auf irgendein Element im momentanen DOM zutreffen.
object
.inspect.reports.size()
Absteigend sortierte Liste aller geladenen Module und ihrer Größe in kB.
object [Array?]
.inspect.reports.store()
Statistik für mw.loader.store
  • Zahl der localStorage cache hits and misses,
  • Zahl der items purged from the cache
  • Gesamtgröße des module blob.
object

Parser für Systemnachrichten; ersetzt PLURAL/GENDER und anderes.

.Parser
new mw.jqueryMsg.Parser(options)
.getMessageFunction(options)
.getParserDefaults()
.getPlugin(options)
.HtmlEmitter(language, magic)
.setParserDefaults(data, deep)

Seit 2013 auf dem Weg vom Experimentalstadium zum produktiven Gebrauch:

Unterstützung für lokale Sprachen und Formate. Sollten nur verwendet werden, wenn man weiß, was man tut.

.language.digitTransformTable
wgDigitTransformTable
.language.convertNumber()
.language.convertPlural()
.language.preConvertPlural()
.language.procPLURAL()

Speicherort für als veraltet („deprecated“) geltende Funktionen während der Übergangszeit.

Diese Funktionen waren zuvor definiert unter /skins-1.5/common/wikibits.js oder bits.wikimedia.org/skins-1.19/common/wikibits.js und Ähnlichen. Einige URL können noch funktionstüchtig sein, werden aber nicht mehr wirksam ausgewertet.

  • mediawiki.legacy.wikibits und weitere

Es handelt sich nicht etwa um Wrapper-Aufrufe, die nur intern die mw-Funktionen aufrufen würden, sondern um die vollständigen Codes bis 2011.

Objekt, in das externe Skriptstrukturen (extensions) eingebunden werden können.

Bei Einführung mit MW 1.18 blieb die Beschreibung nebelhaft.[4] Es spricht aber nichts dagegen, Benutzer-eigene Skriptstrukturen einzubinden, um globale Variable auf window-Ebene zu reduzieren. Namenskonflikte sind natürlich zu vermeiden.

Dynamisches Nachladen tatsächlich benötigter Module, sowie von externen JS- und CSS-Definitionen.

  • Zwangsläufig von Anfang an vorhanden, weil diese Komponente die weiteren nachlädt.

Siehe dazu im Detail: ResourceLoader

loader.addSource()
.loader.getModuleNames()
Liste aller bekannten Ressourcen-Namen abfragen.
.loader.getState()
Status einer Ressource abfragen.
.loader.getVersion()
Versionsinformation einer Ressource abfragen – definiert in .loader.register().
.loader.implement()
Deklaration eines neuen Modulnamens, Verbindung mit der zugehörigen Implementierung und Laden.
.loader.load()
.loader.register()
Registrierung eines Moduls zum Abruf über load.php (von //bits.wikimedia.org)
Für Benutzerskripte nicht nutzbar.
.loader.state()
Setze den Status einer Ressource.
.loader.store
Abspeicherung im persistenten WebStorage verwalten.
.loader.using()
Starte eine Funktion, nachdem ein Modul geladen wurde, oder wenn dies fehlschlug; lade fehlende weitere Module nach (siehe Ladezeitpunkt).

Dieses Objekt kann gleichzeitig als Funktion .log() aufgerufen werden.

  • Nach Laden des Moduls sind verfügbar:
    .log.deprecate(obj, key, val, msg)
    Füge einem Objekt obj eine Warnung vor veralteteten Komponenten hinzu, wenn dieser key verwendet wird. Es wird dann ersatzweise val für diese Eigenschaft oder als Rückgabewert einer Methode zurückgegeben. Die ausgeworfene Warnmeldung kann optional durch msg ergänzt werden.
    .log.warn(*)
    Wie mw.log(*), jedoch in der console als warnung gekennzeichnet und um den Aufruf-Stack ergänzt.
  • Es handelt sich standardmäßig um eine blinde Funktion, die von Entwicklern und jedem Benutzer aktuell mit einer selbst programmierten Funktion überschrieben werden kann. Fehlt momentan eine solche Funktion, und wird trotzdem unbeabsichtigt mw.log() aufgerufen (weil irrtümlich der Aufruf irgendwo stehen blieb), so passiert nichts weiter und es tritt auch kein Fehler auf.
    • Die Blindfunktion ist bereits mit dem ResourceLoader definiert.
    • Als Objekt kann es mit dem Modul mediawiki.log geladen werden.
    • Im Debug-Modus wird automatisch mediawiki.log geladen und durch .Debug genutzt, das aber durch eine benutzerdefinierte Funktion wieder überschrieben würde.
  • Das Modul bietet eine allgemein verwertbare Funktionalität an.
    • Die Funktion hat beliebig viele Parameter belebigen Typs.
    • Die bei unterschiedlichen Browsern verschieden anzusteuernden Möglichkeiten zur Anzeige von Fehlern („Konsole“) werden genutzt.
    • Wenn der Browser die gängige console unterstützt, laufen dort die Meldungen kanalisiert auf; ansonsten wird am Seitenfuß eine Box mit id="mw-log-console" eingefügt.
  • Beim Überschreiben des Funktionsobjekts ist ab 2014 darauf zu achten, dass zuvor die beiden Komponenten deprecate und warn des Original-mw-Objekts gesichert und im Anschluss an die Funktionsdefinition dem neuen Funktionsobjekt wieder zugewiesen werden.

Allgemeine Klasse, um Wertzuweisungen zu verwalten. Sie kann auch von Benutzern verwendet werden und wird ansonsten mehrfach in den mw-Funktionen benutzt.

  • Diese Klasse ist bereits mit dem ResourceLoader definiert.

Zunächst ist eine Instanz zu schaffen:

meineSammlung = new mw.Map();

Danach sind die folgenden Funktionen für meineSammlung verfügbar:

.exists()
boolean
  • .exists(key)
    • Ist für die Zeichenkette mit dem Bezeichner key ein Wert vorhanden (nicht null)?
  • Eigentlich kann auch .get(key) benutzt werden; es sei denn eine leere Zeichenkette wäre bedeutungstragend.
  • .exists(array)
    • Array mit Bezeichnern; dann ist die Abfrage nur dann erfolgreich, wenn alle Bezeichner definiert sind.
    • Seit Juni 2020 nur noch einzelne Zeichenketten-Werte als Argumente.[5]
.get()
Abfrage; null wenn nicht definiert
  • .get(key, fallback)
    • key: Zeichenkette mit dem Bezeichner.
    • fallback: (optional) Ersatzwert, wenn key nicht definiert ist.
  • .get(array, fallback)
    • Array mit Bezeichnern; dann ist der Rückgabewert ein Objekt, dessen Komponenten den angeforderten Bezeichnern entsprechen.
      Der Rückfallwert fallback bleibt ein einzelner Wert und für alle Bezeichner gleich.
  • .get()
    • Ohne key werden alle Werte als Objekt zurückgegeben.
.set()
Zuweisung
  • .set(key, value)
    • Einem einzelnen Schlüssel key wird ein einzelner Wert value zugewiesen.
  • .set(obj)
    • Alle Komponenten im Objekt obj werden mit ihrem jeweiligen Wert in meineSammlung aufgenommen.
.values
(veraltet) Objekt mit allen Zuweisungen

.markAsHelpful

[Quelltext bearbeiten]

interne Verwendung (offenbar ArticleFeedback; vermutlich fehlerhaft dort nicht Unterkomponente eines geschlossenen Anwendungsobjekts für alle Aufgaben von ArticleFeedback)

Allgemeine Klasse, um Systemnachrichten zu verwalten.

  • .Message( map, key, params )

Spiegelung der Systemnachrichten von MediaWiki:Nachrichtenname.

  • Diese Komponente ist bereits mit dem ResourceLoader definiert.
.messages
Objekt zur Speicherung der als Objekt vom Typ Message hinterlegten Systemnachrichten.
Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.

Die folgenden Funktionen stehen damit im Zusammenhang:

.message(key, parameters)
Sucht in .messages die Systemnachricht key und gibt ein Objekt vom Typ Message zurück.
Die optionalen parameters sollten ein Array sein, das die Werte für $1, $2 usw. benennt. Sie werden in die Message integriert.
Similar to PHP wfMessage() – Get a translated interface message.
.msg(key, parameters)
Sucht in .messages die Systemnachricht key und gibt eine Zeichenkette zurück.
Die optionalen parameters sollten ein Array sein, das die Werte für $1, $2 usw. benennt. Sie sind bereits in die Zeichenkette eingefügt.
Similar to PHP wfMsg() – Get a message from anywhere, for the current user language.
Message
Objekt, von .message(key, parameters) zurückgegeben.
  • Die Objektdefinition ist bereits mit dem ResourceLoader vorhanden.
Funktionen:
  • Message.toString()
    Standard-Zeichenkette
  • Message.escaped()
    Zeichenkette, aber mit .html.escape() Sonderzeichen ersetzt.
  • Message.plain()
    Zeichenkette, die Parameter $n werden ersetzt.
  • Message.parse()
    Zeichenkette, die Parameter $n werden ersetzt (keine Wikisyntax).
    Wenn jqueryMsg geladen wurde, wird außerdem Wikitext in HTML konvertiert.
  • Message.text()
    Zeichenkette, die Parameter $n werden ersetzt.
    Dies entspricht gerade .msg(key, parameters)

Durch ein zusätzlich nachladbares Modul .jqueryMsg kann die vorstehend beschriebene Funktionalität verändert und erweitert werden. Nachrichten mit PLURAL/GENDER werden dann formatiert.

Nicht mit .util.jsMessage() zu verwechseln.

Medienbetrachter, MultiMediaViewer

.mobileFrontend

[Quelltext bearbeiten]

Objekt

Notification

[Quelltext bearbeiten]

Private Klasse, um eine einzelne Benachrichtigung zu modellieren.

.notification

[Quelltext bearbeiten]

Einzelne Benachrichtigung(en) von geringer Bedeutung für einige Sekunden im Kopfbereich der HTML-Seite (unter der Seitenüberschrift) anzuzeigen oder zu löschen. Dies wird üblicherweise zur Bestätigung von Aktionen benutzt.

Benutzt die Klasse Notification. Nicht zu verwechseln mit .echo.

autoHideLimit
3
Anzahl der Nachrichten, die Benutzer innerhalb von autoHideSeconds lesen und verstehen können.
autoHideSeconds
5
defaults
  • autoHide: true
    Animation zum automatischen Ausblenden
  • tag: false
    Identifikator für unterschiedliche Benachrichtigungen
  • title: undefined
    Titel der Benachrichtigung
.notify(text, options)
Nachricht anzeigen, sobald die Seite fertig geladen wurde.
  • text: Zeichenkette mit dem Inhalt der Nachricht (auch mit HTML-Tags); oder jQuery-Element
  • options: (optional) Objekt
    Siehe Komponenten von .defaults
  • Rückgabewert: Objekt, auch mit einer Funktion .close() zum Schließen der Meldung.
mw.notify() ist eine Art Alias für mw.notification.notify() und lädt das Modul bei Bedarf nach.
mw.notify( 'Dies ist eine Benachrichtigung.' ); // Nachricht mit angegebenen Text anzeigen
mw.notify( mw.message( 'some-message' ) ); // Nachricht mit angegebener Systemnachricht
mw.notify( $( '<span>This is a <u>HTML</u> notification.</span>' ) ); // Nachricht mit jQuery-Instanz (oder DOM-Knoten) als Text
mw.notify( 'Test', { title: 'Title' } ); // Nachricht mit zusätzlicher Überschrift
mw.notify( 'Test', { autoHide: false } ); // Verhindert das automatische Verschwinden der Nachricht (Klick zum Schließen)
mw.notify( 'Test', { tag: 'foobar' } ); // Nachricht mit interner Namenskennzeichnung
mw.notify( 'Test 2', { tag: 'foobar' } ); // Dies ersetzt die vorherige Nachricht   tag: 'foobar'
.pause()
Alle Animationen (zum automatischen Ausblenden) stoppen
.resume()
Alle Animationen (zum automatischen Ausblenden) fortsetzen

interne Verwendung

Interne Verwendung: Seitenaufbau (jeder Seite)

  1. mediawiki.page.startup – Beginn; class=client-js
  2. mediawiki.page.ready – Abschluss des Seitenaufbaus

Einzelne Elemente in der Seite:

.performance

[Quelltext bearbeiten]

Messungen; möglicherweise im Zusammenhang mit .eventLog

  • .performance.memory
  • .performance.navigation
  • .performance.timing

mw.plugin.notify

mw:Extension:Popups

  • .render

Funktionen für reguläre Ausdrücke.

  • deprecated
  • Muss erst mittels .loader geladen werden; Modul: mediawiki.RegExp
.RegExp.escape( s )
Gib eine Zeichenkette zurück, bei der in der Zeichenkette s alle Zeichen mittels \ unwirksam gemacht wurden, die sich auf einen regulären Ausdruck auswirken würden.

Wurde mit gleicher Funktionalität in .util aufgenommen als .util.escapeRegExp(). Weil nur ein Modul zu laden ist und dieses ohnehin oft vorhanden und benötigt ist, empfiehlt es sich, darauf umzustellen; möglicherweise wird langfristig die Unterstützung dieses gesonderten Moduls eingestellt.

Unterstützung von Spezialseiten.

.searchSuggest

[Quelltext bearbeiten]

Unterstützung von localStorage mit Abfangen bei nicht unterstützendem Browser.

.storage.get(access)
string, oder false falls nicht unterstützt
.storage.remove(access)
true wenn gelöscht, oder false falls nicht unterstützt
.storage.set(access, assign)
true wenn gespeichert, oder false falls nicht unterstützt

2015 neu.

.TemplateData

[Quelltext bearbeiten]

templateDataGenerator

2015 neu.

Klasse für Seitennamen (Namensraum und Titel) – Analyse und Standardisierung, Generierung

.Title( title, namespace )
Konstruiert ein neues Titel-Objekt, etwa: t= new mw.Title( title, namespace );
  • title: string
    kann im Format namespace:title sein.
  • namespace: (optional) number
Wirft im Fehlerfall eine Ausnahme (exception).
.Title.newFromText( title, namespace )
Konstruiert ebenfalls ein neues Title-Objekt, gibt aber im Fehlerfall null zurück statt einer Ausnahme.
.Title.newFromImg( $img )
Konstruiert neues Title-Objekt, Dateiname aus jQuery-Objekt für Bild ableiten.
.Title.exist.set( array, live )
Existenz von Seiten registrieren zur Abfrage mit .exists()
  • array – Array mit Zeichenketten oder einzelne Zeichenkette mit Seitenname
  • live – (optional) false für explizite Nichtexistenz
.Title.exists( title )
Existiert die Seite im Wiki?
  • title: string/mw.Title
    kann im Format namespace:title sein oder ein Title-Objekt.
Keine API-Abfrage, sondern Ergebnisse früherer Feststellungen können hinterlegt werden und später abgefragt.
Boolean wenn die Information bekannt ist; sonst null

Danach sind für t folgende Funktionen verfügbar:

.exists()
Existiert die Seite im Wiki?
Gleiche Funktion wie oben nur ohne Parameter
.getDotExtension()
„Dateinamenserweiterung“ mit Punkt oder ""
.getExtension()
„Dateinamenserweiterung“ oder null (ohne Punkt)
.getFragment()
Fragmentbezeichner; ohne # und nicht encoded, Leerzeichen-Format
.getMain()
Kanonischer Seitentitel, Unterstreichungsstrich-Format
.getMainText()
Kanonischer Seitentitel, Leerzeichen-Format
.getName()
Kanonischer Seitentitel ohne „Dateinamenserweiterung“, Unterstreichungsstrich-Format
.getNameText()
Kanonischer Seitentitel ohne „Dateinamenserweiterung“, Leerzeichen-Format
.getNamespaceId()
Nummer des Namensraums
.getNamespacePrefix()
Kanonischer Namensraumname mit Doppelpunkt, Unterstreichungsstrich-Format; Hauptnamensraum ""
.getPrefixedDb()
Kanonischer Seitenname mit Namensraum, Unterstreichungsstrich-Format
Optimal für API-Abrufe
.getPrefixedText()
Kanonischer Seitenname mit Namensraum, Leerzeichen-Format
.getRelativeText( nsn )
Kanonischer Seitenname relativ zu einem Namensraum, Leerzeichen-Format
  • nsn – Nummer des Namensraums
Ohne Namensraum-Präfix, wenn Seite in diesem Namensraum, sonst mindestens mit vorangestelltem Doppelpunkt
.getUrl( params )
URL zu dieser Seite
  • params – (optional) Objekt mit Zuweisungen key:value
    • { action: "edit" }
.toString()
Alias für .getPrefixedDb()
.toText()
Alias für .getPrefixedText()

Funktionen für die Benutzeroberfläche (Bearbeitungs-Modus): mw:edit.js

Im April 2017 per Rundschreiben als zukünftig wegfallend angekündigt, seit 1.30wmf1 (Dezember 2017) als veraltet („deprecated“) deklariert, wurde Anfang November 2018 entfernt; siehe mw:Contributors/Projects/Removal of the 2006 wikitext editor.

.toolbar.$toolbar
seit 1.20wmf9 (August 2012) nicht mehr öffentlich sichtbar
div#toolbar
.toolbar.addButton()
Fügt der Werkzeugleiste mwCustomEditButtons einen Button hinzu.
Kompatibel mit wikibits.js.
Erwartet einen Parameter mit einem Objekt, dessen Komponenten die Eigenschaften eines Buttons definieren.
.toolbar.addButtons()
Wie .toolbar.addButton(), akzeptiert jedoch ein Array mit Button-Definitionen.
.toolbar.buttons()
.toolbar.insertTags(tagOpen, tagClose, sampleText, selectText)
Kompatibel mit wikibits.js.

mw:Universal Language Selector; seit Juli 2013 weltweit aktiviert.

Sprachversionen, Webfonts

Klasse zur Handhabung von URL und URI. Einfache Funktionen zur Analyse und Manipulation.

.Uri(url,options)
Konstruiert ein neues Uri-Objekt, etwa: u= new mw.Uri( url );
  • url: String
  • options: (optional) Objekt mit speziellen Einstellungen für das Uri-Objekt
    • strictMode: false
    • overrideKeys: false

Danach sind für u folgende Funktionen verfügbar:

.getUserInfo()
.getHostPort()
.getAuthority()
.getQueryString()
.toString()
.clone()
.extend(parameters)
Anfügen von opt1=val1&opt2=val2
  • parameters: object
    { "opt1": "val1", "opt2": "val2" }
.UriRelative(defaultLocation)
Setzt Standardwerte für relative Angaben, also: Protokoll, Domain, Port; gültig für alle nachfolgend konstruierten Uri-Objekte. Angaben zum Pfad sind nicht vorgesehen.

.UriRelative

[Quelltext bearbeiten]

Kooperiert mit .Uri.

Informationen über den angemeldeten Benutzer; siehe Benutzerkonfiguration.

.user.anonymous()
→ MW 1.25; jetzt .isAnon()
.user.bucket(key, options)
Von der ClickTracking Extension auch im Cookie festgehaltene Aktivitäten
entfernt 2017-05 1.30.0-wmf.1
.user.getGroups(callback)
Interne Auslösung einer API-Abfrage zur Bestimmung der bereits bekannten wgUserGroups; kein Rückgabewert
.user.getName()
(=wgUserName)
.user.getRights(callback)
Interne Auslösung einer API-Abfrage zur Bestimmung der Benutzerrechte; kein Rückgabewert
.user.groups
noch nicht verfügbar? – durch .getGroups() besetzt
.user.id()
Dauerhafte Identifizierung im Cookie
.user.isAnon( access )
boolean – für angemeldete Benutzer false
.user.isNamed( access )
Angemeldetes Konto (nicht maskiert anonym)
2024 neu
.user.isTemp( access )
Nicht angemeldetes Konto (IP, oder maskiert)
2024 neu
.user.name()
→ MW 1.25; jetzt .getName()
.user.options
Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.
Abgelegt im virtuellen Modul user.options – möglicherweise nicht sofort verfügbar.
  • .user.options.get("Bezeichner")
.user.rights
??? – durch .getRights() besetzt
.user.sessionId()
Relevant für den Anmeldevorgang. Identifizierung im Cookie; Zufallszahl für die Dauer der Browser-Sitzung.
.user.tokens
Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.
  • .user.tokens.get( "csrfToken" )
    Spart die gesonderte Abfrage per API.
  • .user.tokens.get( "watchToken" )
  • Die anderen Arten von action Token wie editToken oder patrolToken sind veraltet; es soll dafür nur noch csrfToken benutzt werden.

Verschiedene Hilfsfunktionen.

.util.addCSS()
Style zur Seite hinzufügen; ausführlich dazu
.util.addPortlet()
Neuen Block in eine Seiten-Navigation einfügen; ausführlich dazu
.util.addPortletLink()
Link in eine Seiten-Navigation einfügen; ausführlich dazu
Kompatibel mit wikibits.js.
.util.$content
Inhaltsbereich der Seite, siehe Skin/GUI
Verfügbar mit .hook("wikipage.content").
.util.debounce( delay, callback )
delay ist eine Verzögerung in Millisekunden.
callback ist eine Funktion.
Ergibt eine Funktion, die erneut aufgerufen werden kann, um die Zeit bis zum Aufruf von callback nochmals um delay zu verlängern.
.util.escapeIdForLink( s )
Encodieren der Zeichenkette s in einer Form, die als Fragment in einer URL geeignet ist, und in der Seite mit gleicher Struktur generiert würde.
.util.escapeRegExp( s )
Gib eine Zeichenkette zurück, bei der in der Zeichenkette s alle Zeichen mittels \ unwirksam gemacht wurden, die sich auf einen regulären Ausdruck auswirken würden.
Eingegliedert aus: .RegExp
.util.getParamValue(key, URL)
Aus den URL-Parametern einen Parameterwert key=value auslesen.
  • key: Schlüsselwort
  • URL: (optional) URL einer (Wiki-)Seite (auch protokollrelativ) – Standardwert: aktuelle Seite
Der Parameterwert ist bereits dekodiert.
War das Schlüsselwort in der URL nicht angegeben, wird null zurückgegeben.
.util.getUrl(title, params)
Adresse einer Seite als relative URL (relativ zu wgServer)
  • title – Seitenname
  • params – (optional) Objekt mit Zuweisungen key:value
    • { action: "edit" }
Ähnelt der Parserfunktion {{fullurl:}}.
.util.getUrl("Wikipedia:Skin/Benutzerskripte (bis 2011)")
  • liefert /wiki/Wikipedia:Skin/Benutzerskripte_%28bis_2011%29
  • Kein Encoding vorgeben! (erfolgt bereits intern)
  • Analog zu .Title.getUrl() gebildet.
.util.init()
Nur einmaliger system-interner Aufruf, sobald document.ready vorliegt. Aktivitäten:
.util.isIPAddress( address, allowBlock )
.util.isIPv4Address( address, allowBlock )
.util.isIPv6Address( address, allowBlock )
.util.isTemporaryUser( access )
Nicht angemeldetes Konto (IP, oder maskiert)
2024 neu
.util.jsMessage(complex, id) [Veraltet]
Eigene Nachricht im Kopfbereich der HTML-Seite anzeigen oder löschen.
  • complex: DOM-Element oder HTML-Zeichenkette
  • id: (optional) Selektor
Achtung: Es kann immer nur eine Nachricht angezeigt werden; eine andere Nachricht eines anderen Skripts entfernt die vorherige.
.util.jsMessage("Nachricht", "info-23")
Kompatibel mit jsMsg() aus wikibits.js.
Veraltet; jetzt .notify()
Zur Vermeidung von Sicherheitslücken („XSS“) muss die Nachricht geeignet escaped werden, falls sie aus dem Wikitext einer Seite entnommene freie Zeichenketten enthält.
Mit MW 1.20wmf10 vom August 2012 änderte sich das Verhalten signifikant. War es bisher ein beliebig einsetzbares Element im Kopf der Seite, ist es nun eine schmale, temporär erscheinende Nachricht („Bubble“) von untergeordneter Bedeutung am rechten Rand.[6]
Eine .notification wirkt bei mehreren Nachrichten und soll auch jquery.messageBox() ersetzen.
.util.rawurlencode(string)
Wie encodeURIComponent(), dazu ! ' ( ) * ~ zusätzlich kodiert.
.util.toggleToc()
Mai 2014 mit gerrit:110680 hier entfernt; Funktionalität jetzt nur noch über mediawiki.toc
.util.updateTooltipAccessKeys($nodes) [Veraltet]
War Ersatz für gleichlautende veraltete Funktion in wikibits.js, jetzt über Modul jquery.accessKeyLabel verfügbar.
Passe an jedem Tooltip eines Werkzeug-Links (mit .util.addPortletLink() erzeugt) die Anzeige des Tastaturkürzels an die Syntax des aktuellen Browsers an.
  • $nodes: (optional) jQuery-Objekt mit Auswahl bestimmter Portlet-Elemente; Vorgabe: Alle typischen Bereiche einer Wiki-Seite, in denen Werkzeug-Links auftreten können.
.util.validateEmail(string)
Mögliche E-Mail-Adresse validieren.
.util.wikiGetlink(title)
Veraltete (umbenannte) Form; seit November 2013 .util.getUrl() verwenden (gerrit:94270); eliminiert.
.util.wikiScript(script)
Pfad zu den Server-Skripten (zurzeit PHP)
  • script: (optional) Name des Skriptes
.util.wikiScript() liefert wgScript für index.php
.util.wikiScript("api") ergibt den API-Pfad (typischerweise /w/api.php)
.util.wikiUrlencode(string)
Wie .util.rawurlencode(), aber _ : / unkodiert (Wiki-Stil).

Siehe auch jQuery für weitere Hilfsfunktionen.

Hilfe:Schriftunterstützung

Ablage von Objekten des GUI (OOUI).

JS2 / MwEmbed

[Quelltext bearbeiten]

Das Projekt „JS2“ wurde Mitte 2011 als „historisch“ eingestuft und nicht mehr weiter verfolgt; durch den ResourceLoader ersetzt.

Im Zusammenhang mit dem Embedded Media Player tauchten Ende 2012 im Globalen Namensraum und als unstrukturierte unmittelbare Komponenten von mw allerlei Variablen und „Shortcuts“ erneut in den Wiki-Projekten auf.

Von ihrer Benutzung ist im Zusammenhang mit diesem Projekt dringend abzuraten, sie sind teilweise auch im dortigen Kontext „deprecated“ und kürzen nur ohnehin verfügbare Standard-Funktionen ab. Ihre dauerhafte Unterstützung ist zweifelhaft, die Verfügbarkeit hängt vom dynamischen Laden des MediaPlayers ab. Die Eliminierung wird angestrebt.

  • Die Definition ist nachzulesen unter mw:MwEmbed.
  • Namentlich geht es um: mw.absoluteUrl() mw.addClassFilePaths() mw.addClassStyleSheets() mw.addDialog() mw.addLoaderDialog() mw.addModuleLoader() mw.closeLoaderDialog() mw.getConfig() mw.getEmbedPlayerPath() mw.getHexColor() mw.getJSON() mw.getLocalApiUrl() mw.getMsg() mw.getMwEmbedPath() mw.getRemoteMsg() mw.getScript() mw.getStyleSheet() mw.getToken() mw.getUserName() mw.inherit() mw.isEmpty() mw.isset() mw.isUrl() mw.load() mw.mergeConfig() mw.parseUri() mw.parseWikiText() mw.parseXML() mw.ready() mw.replaceUrlParams() mw.sendBeaconUrl() mw.setConfig() mw.setDefaultConfig() mw.versionIsAtLeast() mw.waitForObject()

Weitere Informationen

[Quelltext bearbeiten]

alle weiteren englisch:

  1. phab:T25580 (Bugzilla:23580) sowie phab:T32713 (Bugzilla:30713)
  2. Die verknüpfte Funktion wird jedes Mal aufgerufen, wenn der Inhalt neu gebildet wird.
    • Deshalb muss geeignet verhindert werden, dass hinzugefügte Elemente außerhalb des Inhaltsbereichs kumulieren.
    • Mit gerrit:101470 wird beim Live Preview (auch VE) der $content detached. Um den Content zu verarbeiten, muss die handler-Funktion in mw.hook() ihren ersten Parameter auswerten; dies ist der aktualisierte $content.
  3. Die verknüpfte Funktion wird aufgerufen, wenn ein (Quelltext[?]-)Bearbeitungsfeld verfügbar wurde.
    • Die handler-Funktion in mw.hook() kann ihren ersten Parameter auswerten; dies ist das aktualisierte $editForm .
  4. Spätere Erwähnung
  5. Arrays wurden über acht Jahre niemals in einem Wiki verwendet. phab:T251855 Gerrit:594345
  6. Abweichend vom vorigen Zustand wird in .util.jsMessage() nun vorgegeben:
    • Standardmäßig verschwindet die Meldung nach weltweit fest vorgegebenen 5 Sekunden.
      • Mauszeiger in Bubble hält 5-Sekunden-Uhr an.
      • Mauszeiger dann aus Bubble heraus startet 5-Sekunden-Uhr wieder.
      • Klick auf Bubble lässt sie verschwinden.
    • Die Bubble ist auf eine weltweit fest vorgegebene Breite von 20 Anschlägen (width:20em) festgelegt. Sie ist zum rechten Rand orientiert und fällt bei „links nach rechts“ dort nicht mehr ins Auge.
    Siehe auch WD:NEU zur Anpassung des Klick-Verhaltens.