VisualEditor und JavaScript
Auf dieser Seite wird dargestellt, wie sich der VisualEditor (VE) von Programmierern ansprechen lässt, um zusätzliche Funktionen anzubieten, auch während der Bearbeitung den momentanen Wikitext auszulesen oder zu ersetzen.
Eine geschlossene Dokumentation gibt es derzeit nicht. MW empfiehlt, den (minimierten) Quellcode des VE herunterzuladen, mittels Hilfswerkzeugen in eine zeilenweise durch Menschen lesbare Form zu bringen (ohne Kommentarzeilen). Statt des minimierten Codes könne man auch ?debug=1
an die URL anhängen, um auch die Kommentarzeilen und die Entwicklerversion des Quellcodes zu erhalten; dies solle jedoch eine schlechte Idee sein, weil dann das Herunterladen mehrere Minuten dauern könne. Welche URL zu verwenden sei, möge man durch Debuggen einer Wiki-Seite herausfinden, in der der VE voll aktiv sei.
Danach wären in einem interaktiven Debugger Breakpoints in den Quellcode zu setzen, mit deren Hilfe sich herausfinden ließe, welche Aktivität im VE welche Stellen des Quellcodes aktivieren würden. Daraus ließen sich dann Schlüsse für die eigenen Programmierungsabsichten ziehen.
Die Aussicht auf eine Dokumentation wäre düster – “Since there is no good documentation yet for VisualEditor, and may never be”. Wie die Entwickler ihr Wirken koordinieren und effizient arbeiten können, bleibt ebenso im Dunkeln.
Das Anwendungsobjekt für den VE residiert global und trägt den Bezeichner ve
(also window.ve
).
Ein weiteres Objekt mw.libs.ve
residiert in der Bibliothekssammlung des mediaWiki-Objekts.
Das VE-Objekt müsste immer vorhanden sein; ebenso mw.libs.ve
.
Ob seines kurzen Namens ist jedoch dringend ratsam, zunächst Typ- und Plausibilitätsüberprüfungen vorzunehmen. Ein nicht gekapseltes Benutzerskript könnte es mit einer Variablen für Verkehrserhebung, Verpackungseinheit oder Vereins… überschrieben haben.
if ( typeof ve === "object" && ve && typeof ve.now === "function" ) {
// Go on.
} else {
console.error( "VisualEditor object unavailable" );
}
ve
Die Komponenten sind in der Regel erst vorhanden, nachdem der VE für einen Wikitext aktiviert wurde.
ve.init.target
ve.init.target.active
1722321629.123
mw.track()
usw.mw.libs.ve
plugin=
moduleID eines Projekt-Gadgets.
mw.libs.ve.addPlugin( "ext.gadget.projektGadget" );
plugin=
function, die eine Ressourcen-URL zurükgibt.
mw.libs.ve.addPlugin( function () { return "https://URL.of/user.js"; } );
android
: [ [ "<"], 3 ]
blackberry
: nullfirefox
: [ [ "<"], 11 ]
msie
: [ [ "<="], 8 ]
opera
: [ [ "<"], 12 ]
safari
: [ [ "<="], 6 ]
silk
: nullMittels mw.config
sind zwei Objekte zugänglich:
wgVisualEditor
mit den Komponenten
wgVisualEditorConfig
mit den Komponenten
target
ist ein Objekt, das Informationen über die Arbeitsumgebung des VE enthält.
target
ist Komponente von ve.init
(nach der ersten Aktivierung des VE).var surfaceModel = ve.init.target.getSurface().getModel();
(in der Regel englischsprachig)