Makros K-Meleon 0.7 Sp1

Der Makro-Code ist in der Datei macros.cfg abgespeichert. Die Datei befindet sich im Profil-Verzeichnis. (Normalerweise im Programm-Verzeichnis von K-Meleon), z.B. unter C:\Programme\K-Meleon\Profiles\default\x.slt

In dieser Datei können Makros definiert werden, die dann ins Menü eingebunden werden können und (oder) über Tastenkombinationen aufgerufen werden können.

Die Makrobefehle stehen auch als Kurzübersicht zur Verfügung.

Makro-Aufbau

Ein Makro besteht grundsätzlich aus dem Makro-Namen und einem geschweiftem Klammerpaar, das die Befehle und Anweisugen einschließt. Jede Anweisung schließt mit einem Semikolon ab. Es können mehrere Anweisungen in einer Zeile stehen. Innerhalb einer Makro-Anweisung darf keine Zeilenschaltung vorkommen:

google {menu="Google"; openbg("http://www.google.de"); }
System-Makros

Es gibt einige Makros, die automatisch von K-Meleon aufgerufen werden, wenn bestimmte Ereignisse eintreten:

MakronameEreignis
OnStartupWenn K-Meleon gestartet wird
OnOpenWindowWenn ein neues Fenster (oder Register) geöffnet wird
OnCloseWindowWenn ein Fenster oder Register geschlossen wird
OnLoadWenn eine Seite geladen wird
OnQuitWenn K-Meleon beendet wird.

Damit stehen die o.a. Makronamen natürlich nicht mehr für eigene Makros zur Verfügung.

Das folgende Beispiel ruft ein Makro auf, wenn in der URL 'makro=' vorkommt. (Wenn also z.B. file://c:/seite.htm?makro=test aufgerufen wird, startet das Makro 'test').

OnLoad { $pos=index($URL, "?makro="); macros($pos == -1 ? "ende" : "makro_onload"); } makro_onload {$posi=index($URL, "=")+1; macros(substr($URL, $posi)); } ende {}
Kommentarzeilen

Eine Zeile, die mit # beginnt, wird als Komentar interpretiert und wird für die Definition ignoriert. Beispiel:

# Dies ist eine Kommentarzeile Dies ist keine Kommentarzeile
Operatoren

Zur Definition von Funktionsargumenten und Variablen stehen folgende Ausdrücke zur Verfügung:

+ Addition $x = 7 + 3; 10 - Subtraktion $x = 7 - 3; 4 * Multiplikation $x = 7 * 3; 21 / Division $x = 7 / 3; 2 % Rest $x = 7 % 3; 1 (Rest der Divison) == Gleich $x = 7 == 3; false != Ungleich $x = 7 != 3; true . Verkettung $x = 7 . 3; 73 ? : Bedingungen $x = $y==1 ? 2:3; 2 (wenn y gleich 1 dann 2 sonst 3)

Um die Berechnungsreihenfolge zu beeinflussen, können Klammern benutzt werden:

Variablen

Variablen sind beliebige Namen, die mit einem $-Zeichen beginnen. Der Variablenname darf Zahlen enthalten (z.B. Wert1), darf aber nicht mit einer Zahl beginnen. Außerdem darf der Name natürlich nicht mit einer der Systemvariablen identisch sein.

$wert = "true" $x = 5 $y = "Text"

Variablen können mittels Operatoren definiert oder verändert werden:

$x = 5 * 2 $x = $x + 1 $schrift = getpref(INT, "font.size.variable.x-western")-1

Variablen können in Kommandos anstelle von Text als Argument verwendet werden.

setpref(INT, "font.size.variable.x-western", $schrift)

Ebenso ist die Kombination mit Text möglich. Dann muß allerdings ein Punkt ('.') als Trennzeichen verwendet werden.

statusbar("Schrift vergrößert auf " . $schrift . "px");
Systemvariablen

Folgende Systemvariablen stehen zur Verfügung:

Text

Text wird in Anführungszeichen gesetzt. Ein Backslash wird als Einleitung zu Sonderzeichen interpretiert:

\\ Backslash \n Neue Zeile \r carrige return \" Anführungszeichen

Eine Windows-Pfadangabe in einem Text muß also immer einen doppelten Backslash haben:

$datei="c:\\Programme\\k-meleon";
Kommandos

Jedes Kommando wird mit einem Semikolon abgeschlossen. Argumente, die als Text angegeben werden, müssen in Anführungszeichen eingeschlossen sein. Es sind mehrere Kommandos pro Zeile möglich. Ein Kommando darf sich jedoch nicht über 2 Zeilen erstrecken.

menu = "name";

Name ist der Text, der angezeigt wird, wenn das Makro in das Menü eingebunden wird.

menu = "Schrift vergrößern";

Dieser Text kann in der Menüdefinition verändert werden.

alert(Text [,Titel [,ICON]]);

ICON = EXCLAIM | INFO | STOP | QUESTION

Zeigt ein Dialogfeld an, mit Titel in der Titelzeile, Text im Dialogfenster, einem Icon und einer OK-Schaltfläche, die betätigt werden muß. Das Dialogfeld hat keinen Rückgabewert. Nachfolgendes Beispiel zeigt den Inhalt der Zwischenablage an:

alert(getclipboard(), "Inhalt der Zwischenablage", INFO);

exec(kommando parameter);

Führt ein externes Kommando (Programm) mit den angegebenen Parametern aus.

exec("notepad c:\\programme\\k-meleon\\license.txt");

Die Doppelten umgekehrten Schrägstiche (\\) in der Pfadangabe sind wichtig, weil der Backslash (\) ein Sonderzeichen eileitet. Siehe auch Text.

id(Kommando_ID)

Führt ein ID-Kommando aus.)

id(ID_NAV_RELOAD);

macros(Makroname);

Führt das Makro 'Makroname' aus.

macros("beispiel"); open(url);

Öffnet die URL im gleichen Browser-Fenster

open("http://www.google.de"); opennew(url)

Öffnet die URL in einem neuen Fenster

opennew("file:///d:/programme/k-meleon/hilfe/index.htm"); openbg(url)

Öffnet die URL in einem neuen Fenster im Hintergrund, d.h. das neue Fenster wird nicht in den Vordergrund geholt.

openbg("http://www.google.de")

plugin(pluginname, command)

Führt ein Plugin-Kommando aus

plugin("bookmarks", "Add");

pluginmsg(pluginname, command, Argument1, Argument2)

Führt ein Plugin-Kommando aus

pluginmsg("favorites", "AddLink", $URL, $TITLE);

statusbar(text)

Zeigt einen Text in der Statusleiste an.

statusbar("Java-Script wurde ausgeschaltet");

setpref(type, pref, value)

Verändert eine Grundeinstellung. 'Type' kann sein: BOOL (Boolean=Bool'sche Variable true oder false), INT (Integer=Ganzzahl), oder STRING (Text), je nach Erfordernis der Einstellung, die verändert werden soll. Siehe auch Liste der Grundeinstellungen

setpref(string, "kmeleon.general.searchEngine", "http://www.google.de/search?q=)"

togglepref(typ, pref, werte...)

Schaltet nacheinander die angegebenen Grundeinstellungs-Werte um und beginnt am Ende wieder mit dem ersten. Wenn Bool'sche Werte umgeschaltet werden sollen, dürfen keine Werte angegeben werden.

togglepref(INT, "font.size.variable.x-western",16,18,20,22,24,26) togglepref(BOOL, "network.cookie.warnAboutCookies")

setclipboard(Text);

Schiebt 'text' in die Zwischenablage. Siehe auch getclipboard.

setclipboard($temp);
Funktionen

basename( Name [, Erweiterung] );

Liefert den Namen ohne den vorangehenden Pfad. Ist eine 'Erweiterung' angegeben, wird sie ebenfalls entfernt.

alert(basename($URL), "basename(".$URL.")"); # liefert den Dateinamen der Adresse alert(basename($URL, "htm"), "basename(".$URL.")"); # liefert den Dateinamen der Adresse ohne Erweiterung # aber nur, wenn die Erweiterung 'htm' ist.

confirm(Text [,Titel] [,BUTTONS] [ICONS]);

BUTTONS = RETRYCANCEL | YESNO | YESNOCANCEL | ABORTRETRYIGNORE

ICON = EXCLAIM | INFO | STOP | QUESTION

RESULT = OK | YES | NO |ABORT | RETRY | IGNORE | 0

Zeigt ein Dialogfeld an, mit Titel in der Titelzeile, Text im Dialogfenster, einem Icon und den entsprchenden Schaltflächen. Nach dem Betätigen einer Schaltfläche wird der entsprechende Rückgabewert geliefert. Wenn BUTTONS nicht angegeben wird, stehen OK und Abbrechen zur Verfügung.

$ergebnis=confirm("Wollen Sie die Funktion wirklich ausführen?", "Sicherheitsfrage"); $ergebnis=confirm("Wollen Sie die Funktion ausführen?", "Sicherheitsfrage", YESNO, QUESTION);

Das Ergebnis der Abfrage kann mit einer Bedingung ausgewertet werden

Das Kommando confirm ist aber nicht nur mit Bedingungen einsetzbar, sondern auch in Verbiundung mit exec() oder macro() sinnvoll. Mit letzterem kann eine einfache bedingte Verzweigung realisiert werden:

zwab { menu="Zwischenablage anzeigen"; $goto=confirm("Soll der Inhalt der Zwischenablage angezeigt werden?", "Frage"); macros("zwab".$goto); } zwabOK { alert(getclipboard(), "Inhalt der Zwischenablage"); } zwab0 { alert("Zwischenablabe wird nicht angezeigt.", "Inhalt der Zwischenablage"); }

dirname(URL);

Liefert das übergeordnete Verzeichnis zurück:

open(dirname($URL));

gensub(Alt, Neu, Modus, Zieltext);

Sucht im 'Zieltext' den Textteil 'Alt' und ersetzt ihn durch den Textteil 'Neu'.

Der Rückgabewert von gensub ist der modifizierte Text:

$text="Dieser alte Text ist mit anderen alten Texten nicht vergleichbar."; alert(gensub("alt", "neu", "g", $text), "gensub(".$text.")"); # ergibt: Dieser neue Text ist mit anderen neuen Texten nicht vergleichbar.

gsub(Alt, Neu, Text);

Jedes Vorkommen von 'Alt' in 'Text' wird durch 'Neu' ersetzt. Rückgabewert ist der modifizierte Text.

$text="Dieser alte Text ist mit anderen alten Texten nicht vergleichbar."; alert(gsub("alt", "neu", $text), "gsub(".$text.")"); # ergibt: Dieser neue Text ist mit anderen neuen Texten nicht vergleichbar.

getclipboard();

Liest den Inhalt der Zwischenablage. Siehe auch setclipboard.

$temp=getclipboard();

getpref(type, pref)

Liest eine Grundeinstellung. 'Type' kann sein: BOOL (Boolean=Bool'sche Variable true oder false), INT (Integer=Ganzzahl), oder STRING (Text), je nach Erfordernis der Einstellung, die verändert werden soll. Siehe auch Liste der Grundeinstellungen

getpref(INT, "font.size.variable.x-western")

hostname(URL);

Liefert den Hostnamen der URL zurück:

open(dirname($URL));

index(Text, Teil);

Liefert die Zeichenposition von 'Teil' im 'Text', beginnend bei Position 0. Wenn 'Teil' nicht vorkommt, wird -1 zurückgeliefert.

$text="0123456789"; alert(index($text,"5"), "index(".$text.")");

length(Text);

Liefert die Länge (Anzahl Zeichen) des Textes:

alert(length("Text"));

pluginmsgex(pluginname, command, argument, Typ)

Führt ein Plugin-Kommando aus

$url = pluginmsgex( "hotlist", "FindNick", $nickname, STRING );

prompt(Text [,Titel [,Vorgabe]]);

Öffnet eine Dialogbox, in die Text eingetragen werden kann und liefert diesen zurück.

$eingabe=prompt("Bitte Text eingeben","Texteingabe", "Textvorgabe");

sub(Alt, Neu, Text);

Das erste Vorkommen von 'Alt' in 'Text' wird durch 'Neu' ersetzt. Rückgabewert ist der modifizierte Text.

$text="Dieser alte Text ist mit anderen alten Texten nicht vergleichbar."; alert(gsub("alt", "neu", $text), "gsub(".$text.")"); # ergibt: Dieser neue Text ist mit anderen alten Texten nicht vergleichbar.

substr(Text, Beginn [, Anzahl] );

Liefert 'Anzahl' Zeichen von 'Text', beginnend mit 'Beginn'. Das erste Zeichen hat die Position 0. Wenn 'Anzahl fehlt, werden alle Zeichen von 'Text' ab 'Beginn' geliefert.

alert(substr("K-Meleon", 2));
Makro erstellen

Ein Makro besteht aus dem Namen und den Kommandos zwischen geschweiften Klammern:

Beispiele

Schriftgroesser { # Der Text, der im Menü angezeigt wird menu = Schrift vergrößern $newsize = getpref(INT, "font.size.variable.x-western") + 1; setpref(INT, "font.size.variable.x-western", $newsize); setpref(INT, "font.size.fixed.x-western", $newsize); statusbar("Schrift vergrößert auf " . $newsize); } javascriptaus { menu = "Java-Script aus (besondere Seiten ein)"; setpref(STRING, "capability.policy.default.javascript.enabled", "noAccess"); setpref(STRING, "capability.policy.jsok.javascript.enabled", "allAccess"); id(ID_NAV_RELOAD) statusbar("Java-Script wurde ausgeschaltet, außer für besondere Seiten"); }
Makro mit einer Tastenkombination aufrufen

Mit KEY = macros(name) wird das Makro einer Tastenkombination zugeordnet. Die Definition erfolgt in der Datei accel.cfg im entsprechenden Profil.

Beispiel

CTRL VK_UP = macros(schriftgroesser) CTRL VK_DOWN = macros(schriftkleiner)
Makro in ein Menü einbinden

Mit dem Kommando macros(name) wird das Makro als Menüpunkt dargestellt. Name ist der Name des Makros. Die Definition erfolgt in der Datei menu.cfg im entsprechenden Profil.

Schrift { macros(schriftgroesser) macros(schriftkleiner) }

Alternativ können Sie einen anderen Text zuordnen. Dann gilt die Syntax, die auch für andere Plugins gilt. Das ist nützlich, wenn Sie beispielsweise dem Makro eine Tastenkombination zugeordnet haben und diese im Menü anzeigen wollen:

Schrift { macros(schriftgroesser, Schrift vergößern\t Ctrl+Pfeil oben) macros(schriftkleiner, Schrift verkleinern\t Ctrl+Pfeil unten) }
Makro Anmerkungen

Der Task, in dem ein Makro ausgeführt wird, ist das Browserfenster, in dem es gestartet wurde. Ein Makro wird nicht in einem anderen Browserfenster fortgeführt, selbst wenn mit id(ID_WINDOW_NEXT) der Focus an ein anderes Browserfenster übergeben wird. Alle Makrobefehle beziehen sich dann immer noch auf das Fenster, in dem Sie sich befunden haben, als das Makro aufgerufen wurde. Das gilt auch für verkettete Makros, die mit macros(name) aufgerufen werden. Das ist entscheidend, für Befehle, die sich auf Inhalte der angezeigten Seite beziehen, z.B. id(ID_EDIT_COPY).