K-Meleon
KMeleonWiki > Documentation > EndUserDocs > MacroLanguage
Siehe auch:
Eine Zeile, die mit # beginnt, ist ein Kommentar und wird ignoriert.
# das ist ein Kommentar
Variablen werden nicht explizit als solche definiert, sondern müssen einen Namen haben, der mit einem Dollarzeichen beginnt. Eine Variable kann entweder global sein und in jedem Makro benutzt werden, oder lokal in einem bestimmten Makro. Bevor eine Variable in einem Ausdruck verwendet werden kann, muss ihr ein Wert zugewiesen werden. Als Werte stehen ganze Zahlen (Integer) und Zeichenketten (Strings) zur Verfügung.
$x = 0; $y = "Eine Zeichenkette";
Makrodefinitionen bestehen aus einem Makronamen gefolgt von einer Reihe von in geschweiften Klammern eingeschlossenen Anweisungen, die für dieses Makro auszuführen sind. Optional kann 'menu' eine Zeichenkette zugewiesen werden, um den Text festzulegen, der angezeigt wird, wenn das Makro in Menüs verwendet wird.
Beispiel { menu = "Menütext"; $x = 0; }
Die folgenden Operatoren stehen zur Verfügung:
Operator | Bedeutung | Beispielanweisung | Ganzzahliges Ergebnis |
= | Zuweisung | $x = 7; | $x = 7 |
. | Zeichenkettenverknüpfung | $x = 7 . 3; | $x = 73 |
+ | Ganzzahlige Addition | $x = 7 + 3; | $x = 10 |
- | Ganzzahlige Subtraktion | $x = 7 - 3; | $x = 4 |
* | Ganzzahlige Multiplikation | $x = 7 * 3; | $x = 21 |
/ | Ganzzahlige Division | $x = 7 / 3; | $x = 2 |
% | Ganzzahliger Rest | $x = 7 % 3; | $x = 1 |
== | Gleichheit | $x = 7 == 3; | $x = 0 |
!= | Ungleichheit | $x = 7 != 3; | $x = 1 |
<, <=, >, >= | Zeichenkettenvergleich | $x = 10 < 2 | $x = 1 |
<, <=, >, >= | Ganzzahlenvergleich | $x = +10 > +2 | $x = 1 |
? : | Bedingter Ausdruck | $x = $y==1 ? 2:3; | $x = 2 falls y gleich 1, $x = 3 sonst |
Runde Klammern können verwendet werden, um die Reihenfolge der Auswertung zu ändern. Standardmäßig werden Additionen und Subtraktionen vor Multiplikationen, Divisionen und der Restoperation ausgeführt.
Wenn nötig wird eine Variable automatisch von einer Zeichenkette in eine Ganzzahl umgewandelt und umgekehrt.
$x = 1 + "2"; $x = 3 $y = "Der Wert von x ist " . x; $y = "Der Wert von x ist 3"
Zeichenketten sollten in doppelte Anführungszeichen eingeschlossen werden, obwohl das nicht nötig ist, solange die Zeichenkette keine Operatoren enthält. Ein Backslash wird verwendet, um spezielle Zeichen zu maskieren:
\\ | Backslash (\) |
\n | Zeilenumbruch |
\t | Tabulator |
\" | Anführungszeichen (") |
Die Zeichenketten "true" (wahr) und "false" (falsch) werden als boolesche Werte erkannt und können statt bedingter Ausdrücke verwendet werden.
$z = "false"; $z ? $x = 1 : $x = 0; $x = 0 $z = "true"; $z ? $x = 1 : $x = 0; $x = 1
Es gibt eine Reihe vordefinierter globaler Variablen, damit K-Meleon-Makros auf einige globale Zustandsinformationen zugreifen können.
$ARG | Vom aufrufenden Plug-in übergebenes Argument (nicht vom aufrufenden Makro). |
$CHARSET | Für die aktuelle Seite verwendete Zeichenkodierung. Seit 1.0. |
$FrameURL | URL des aktuellen Frames. |
$ImageURL | URL des aktuellen Bildes. |
$LinkURL | URL des aktuellen Verweises. |
$SelectedText | Auf der aktuellen Seite markierter Text. Seit 1.0. |
$TextZoom | Für den Text der aktuellen Seite verwendeter Vergrößerungsfaktor. Seit 1.0. |
$TITLE | Titel der aktuellen Seite. |
$URL | URL der aktuellen Seite. |
$URLBAR | Inhalt der Adressleiste. Seit 1.0. |
OnActivateWindow OnCloseGroup OnCloseWindow OnInit OnLoad OnOpenWindow OnQuit OnSetup OnStartup OnWMAppExit
Anweisungen sollten durch einen Strichpunkt abgeschlossen werden. Anweisungen dürfen sich nicht über mehrere Zeilen erstrecken!
# DAS IST UNGÜLTIG $fehler = 1 + 1;
Mehrere Anweisungen können durch Strichpunkte getrennt in einer Zeile aufgereiht werden.
$x = 0; $y = "Eine Zeichenkette";
Der Operator für bedingte Ausdrücke (? :) kann verwendet werden, um eine einzelne Anweisung in Abhängigkeit von einer bestimmten Bedingung auszuführen.
Eine vollständige "Wenn ... dann ... sonst ..."-Anweisung würde so aussehen:
BEDINGUNG ? ANWEISUNG_BEDINGUNG_WAHR : ANWEISUNG_BEDINGUNG_FALSCH;
Eine einfache "Wenn ... dann ..."-Anweisung würde so aussehen:
BEDINGUNG ? ANWEISUNG_BEDINGUNG_WAHR : 0;
Im obigen Beispiel wird nichts (0 = Null) ausgeführt, wenn die Bedingung nicht erfüllt ist.
Um mehrere Anweisungen in Abhängigkeit von einer bestimmten Bedingung auszuführen, müssen diese in Hilfsmakros gekapselt werden:
BEDINGUNG ? &BedingungWahr : &BedingungFalsch; BedingungWahr { ... } BedingungFalsch { ... }
open( URL );
Öffnet URL im aktuellen Browserfenster.
opennew( URL );
Öffnet URL in einem neuen Browserfenster.
openbg( URL );
Öffnet URL in einem neuen Hintergrundfenster.
$WERT = getpref( TYP, "user.preference.variable" );
Liest eine Benutzereinstellung.
TYP = BOOL | INT | STRING
setpref( TYP, "user.preference.variable", WERT );
Setzt eine Benutzereinstellung.
TYP = BOOL | INT | STRING
togglepref( TYP, "user.preference.variable", WERT1, WERT2, ... );
Schaltet eine Benutzereinstellung zwischen einer Reihe von Werten um (boolesche werden immer zwischen true und false umgeschaltet).
TYP = BOOL | INT | STRING
exec( BEFEHLSZEILE );
Führt ein externes Programm aus.
id( BEFEHL_ID );
Sendet eine Nachrichten-ID an das aktuelle Fenster. Siehe die vollständige Liste der Befehl-IDs.
plugin( PLUGIN, BEFEHL ); pluginmsg( PLUGIN, BEFEHL, ARGS ); $ANTWORT = pluginmsgex( PLUGIN, BEFEHL, ARGS, TYP );
Führt einen Plug-in-Befehl aus. Die möglichen Werte von BEFEHL, ARGS und TYP hängen vom jeweiligen Plug-in ab. Siehe die vollständige Liste der Plug-in-Befehle.
alert( MELDUNG [, TITEL [, ICON]] );
Zeigt ein Meldungsfenster an.
ICON = EXCLAIM | INFO | STOP | QUESTION
$ERGEBNIS = confirm( MELDUNG [, TITEL [, BUTTONS [, ICON]]] );
Zeigt ein Meldungsfenster an und bittet um Bestätigung.
BUTTONS = RETRYCANCEL | YESNO | YESNOCANCEL | ABORTRETRYIGNORE
ICON = EXCLAIM | INFO | STOP | QUESTION
ERGEBNIS = OK | YES | NO |ABORT | RETRY | IGNORE | 0
$WERT = prompt( MELDUNG [, TITEL [, STANDARD_STRING]] );
Zeigt einen Eingabedialog an und gibt ein Zeichenkette zurück.
statusbar( TEXT );
Zeigt den Nachrichtentext in der Statusleiste an.
$TEXT = getclipboard();
Liest Daten aus der Zwischenablage.
setclipboard( TEXT );
Schreibt Daten in die Zwischenablage.
$SUB = gensub( r, s, h, t );
Durchsucht die Zielzeichenkette t nach Übereinstimmungen mit der Zeichenkette r. Falls h eine Zeichenkette ist, die mit g oder G beginnt, dann werden alle Übereinstimmungen mit r durch s ersetzt. Ansonsten ist h eine Zahl, die angibt, welche Übereinstimmung mit r ersetzt werden soll. Die geänderte Zeichenkette wird zurückgegeben.
$SUB = gsub( r, s, t );
Ersetzt alle Übereinstimmungen mit der Teilzeichenkette r in der Zeichenkette t durch die Zeichenkette s und gibt die geänderte Zeichenkette zurück. Dies ist äquivalent zu gensub( r, s, "G", t).
$SUB = sub( r, s, t );
Genau wie gsub(), aber nur die erste Übereinstimmung mit der Teilzeichenkette wird ersetzt. Dies ist äquivalent zu gensub( r, s, 1, t).
$SUB = substr( s, i [, n] );
Gibt eine maximal n Zeichen lange Teilzeichenkette beginnend bei i zurück. Falls n weggelassen wird, wird der Rest von s verwendet.
$I = index( s, t );
Gibt den Index der Zeichenkette t in der Zeichenkette s zurück. Oder -1, falls t nicht vorkommt.
$LEN = length( s );
Gibt die Länge der Zeichenkette s zurück.
$BASE = basename( URL [, SUFFIX] );
Gibt URL ohne führende Verzeichniskomponenten zurück. Falls angegeben, wird auch ein abschließendes SUFFIX entfernt.
$DIR = dirname( URL );
Gibt URL ohne die abschließende /Komponente zurück. Falls URL kein '/' enthält, wird '.' ausgegeben (was das aktuelle Verzeichnis bedeutet).
$HOST = hostname( URL );
Gibt den Hostnamen der gegebenen URL zurück.
macros( MAKRO1 [,MAKRO2 [,MAKRO3 [...]]] );
Führt ein anderes Makro aus. Mehrfache Makroausführung seit 1.1.
&MAKRO;
Äquivalent zu macros( MAKRO ).
$INHALT = readfile( PFAD );
Gibt den Inhalt der angegebenen Datei zurück (maximal 32 kB). Nur für kleine Textdateien.
$WERT = readreg( WURZEL, PFAD );
Gibt den Inhalt des angegebenen Registry-Schlüssels zurück.
WURZEL = HKLM | HKCU | HKCC | HKCR | HKU
$PFAD = promptforfile( START_ORDNER, DATEI_TYP_BESCHREIBUNG, DATEI_ERWEITERUNG_PATTERN );
Fordert den Benutzer auf, eine Datei auszuwählen. Dabei werden nur diejenigen Dateien angezeigt, die dem Muster (Pattern) entsprechen.
$PFAD = promptforfolder( ÜBERSCHRIFT [, START_ORDNER] );
Fordert den Benutzer auf, einen Ordner auszuwählen.
injectJS( JS_CODE ); injectCSS( CSS_CODE );
Injiziert ein JavaScript oder ein Cascading Style Sheet in die aktuelle Seite.
$GÜLTIG_URL = urlencode( TEXT );
Kodiert TEXT für die Verwendung in einem URL.
$ÜBERSETZUNG = _( TEXT );
Ersetzt TEXT durch die angegebene Übersetzung, falls vorhanden.
while( BEDINGUNG ) ANWEISUNG
Führt eine einzelne ANWEISUNG solange (while) aus, wie die BEDINGUNG erfüllt ist. Um mehrere Anweisungen auszuführen, müssen diese in einem Hilfsmakro gekapselt werden:
while( BEDINGUNG ) &Schleife; Schleife { ... }
$PFAD = getfolder( ORDNER_TYP );
Gibt den Pfad des angegebenen Ordners zurück.
ORDNER_TYP = RootFolder | SettingsFolder | ProfileFolder | ResFolder | SkinFolder | MacroFolder | UserMacroFolder
setaccel( TASTE, BEFEHL);
Setzt ein Tastenkürzel für den angegebenen Befehl.
TASTE: Zu verwendende Taste(nkombination) z.B. "CTRL ALT X".
BEFEHL: Befehl-ID oder Plug-in-Befehl. Falls NULL, wird das Tastenkürzel gelöscht.
setmenu( MENÜ_NAME, EINTRAG_TYP [, EINTRAG_NAME [, BEFEHL]] [, WO]);
Parameter | Typ | Bedeutung |
MENÜ_NAME | String | Gibt den Namen des adressierten Menüs an (nötig). |
EINTRAG_TYP | vordefiniert | Gibt die Natur des adressierten Eintrags an (nötig). Kann eine dieser Zeichenketten sein: inline, popup, command, macro, separator. |
EINTRAG_NAME (1) | String | Gibt den Namen des adressierten Eintrags im adressierten Menü an. |
BEFEHL (2) | String | Gibt den mit dem adressierten Eintrag verknüpften Befehl an. |
WO (3) | String oder Integer String -1 n=0,1,2,... |
Gibt an, wo der adressierte Eintrag einzufügen ist. Vor einem nach Eintragsname oder nach Befehl identifizierten Eintrag einfügen Am Ende des adressierten Menüs einfügen An Position n des adressierten Menüs einfügen (1. Position: 0) |
(1) EINTRAG_NAME muss für alle Eintragstypen außer "separator" angegeben werden. Falls EINTRAG_NAME ein Leerstring ist, ist dies eine Löschung.
(2) BEFEHL muss für die Eintragstypen "command" und "macro" angegeben werden. Falls BEFEHL ein Leerstring ist und EINTRAG_NAME ist es nicht, ist dies eine Löschung.
(3) WO kann für alle Eintragstypen außer "separator" weggelassen werden (-1 ist der Standardwert).