Javascript ist Toll!

Javascript > Skripte

30. März 2009 - 13:45

BB Code Buttons

Ich hatte in der Vergangenheit ja schon einmal ein Skript vorgestellt, mit dessen Hilfe es möglich ist BB-Code in eine Textarea einzufügen. Um es einsetzen zu können, werden entsprechende Buttons benötigt, die z.b. über einer Textarea angezeigt werden und mit denen dann der Text entsprechend formatiert wird. Dazu habe ich das Skript erweitert und verbessert, sodass sich automatisch und leicht konfigurierbar, über eine Textarea, JS Buttons einfügen lassen.

Ich nutze den Code als Basis für Greasemonkey-Skripte, für einige Foren, die keine entsprechenden Buttons anbieten (z.b. das Forum auf Perlunity)

Das Skript ist relativ kompakt (knapp über 100 Zeilen mit Kommentaren) und funktioniert bei meinen Tests unter Windows XP, in allen gängigen Browser.

Anwendung

Das Skript ist leicht zu benutzen, erfordert aber Grundkenntnisse in der literalen Schreibweise von Javascript. Um die Buttons einzufügen darf das Skript erst ausgeführt werden, wenn die Textarea dargestellt ist, sinnvoll ist der Aufruf im HTML Code hinter Textarea, respektive hinter dem Formular (wenn man document.forms.textarea verwenden möchte).

Der Aufruf erfolgt so: BB_Code( param ) , wobei der Parameter ein Objekt ist, dass folgende Eigenschaften besitzen kann bzw. muss:

Die Eigenschaft parameter.element dürfte klar sein. Das ist eine Referenz wie sie z.b mit document.getElementById() o.ä ermittelt wird.
Das Array buttons ist etwas komplexer. Die einzelnen Einträge des Arrays, müssen Objekte sein, mit deren Eigenschaften die Buttons gesteuert werden können. Jedes Objekt kann folgende Eigenschaften haben:

Beispiel


Quellcode

javascript: js/bb_code_example.js
function add() {
 
	var url = new RegExp('^(http://|https://|www.|ftp://|mailto:)');
	var findLink = function(tag, text, button) {
		var new_text = text;
		if( url.test(text)  ) {
			// Der Text ist ein Link
			href = text;
			new_text = window.prompt('Linktext eingeben:', '');
			if(new_text == null) return text; // Abbruch
			if(!new_text) new_text = text;
		} else {
			// Der Text ist der Titel oder muss eingegeben werden
			new_text = text || window.prompt('Linktext eingeben:', '');
			if(new_text == null) return text;
			href = window.prompt('URL eingeben:', 'http://');
			if(href == 'http://' || href == null)return text;
			if (!url.test(href)) href = 'http://' + href;
		}
		// Aufruf der default Funktion, die [tags] um den Text platziert.
		return this.def('url', new_text, button, '=' + href);
	};
 
	var param = 	{
		// die Textarea vor der die Buttons eingefügt werden soll
		element: document.getElementsByTagName('textarea')[0],
		// Die Buttons
		buttons: [
			{tag: 'b'},
			{tag: 'i'},
			{tag: 'strike', text: 's', help:"Durchstreichen"},
			{tag: 'b'},
			'-',
			{tag: 'link', text: 'Link', func: findLink}
		]
	};
 
	BB_Code(param);
}

Erläuterungen

Das Beispiel zeigt eine Funktion, die oberhalb der ersten Textarea auf einer Seite, mehrere Buttons zum einfügen von BB-Code einbaut. Ausserdem ist exemplarisch eine Funktion integriert, die den markierten Text prüft, ob dieser ein Link ist und dann den BB Tag [url=link]text[/url] einfügt.

Dazu wird zuerst ein Regulärer Ausdruck definiert, der prüft ob eine Zeichenkette mit http://, https://, ftp:// oder mailto: beginnt. Die Variabel findLink zeigt auf eine Funktion, die beim drücken des Buttons link aufgerufen wird. Eine sogenannte Callbackfunktion. Diese wird der Eigenschaft func in dem entsprechenden Eintrag zugewiesen.
Den Callbackfunktionen werden immer die gleichen Parameter übergeben. Die Bezeichnung des Tags, der markierte Text und die Referenz auf den Button. Der Rückgabewert ist der Text, der statt des Markierten eingesetzt wird.
In dem Beispiel wird dazu die default Funktion this.def() aufgerufen.

javascript
this.def(tag, text, button, attribut)

Diese erzeugt das typische BB Code Muster [tag]text[/tag]. Optional kann noch ein Attribut übergeben werden - in dem Beispiel '=' + href, das direkt hinter dem Starttag eingefügt wird.

Download

BB_code.js

weiterführende Links

Und noch ein paar informative Links

Comments (0)
2866 mal gelesen.

Keine Kommentare Einen Kommentar hinterlassen »

Es gibt noch keine Kommentare.

Einen Kommentar hinterlassen

Name (erforderlich)
Mail (wird nicht angezeigt) (erforderlich)
Website


Powered by WordPress Stop Spam Harvesters, Join Project Honey Pot
rats-wonderful
rats-wonderful
rats-wonderful
rats-wonderful Browser-Statistiken