Seite 1 von 1

markierter Text formatieren like BB-Code (JavaScript)

Verfasst: 08.09.2006 15:23
von ronnyronnsen
Hallo Leute.

Ich sitze an einem kleinen Problemchen mit JavaScript.
Habe gerade ein kleines CMS gebaut für Nicht-Code-Fähige Leute EndUser ; ).

Einfachstes Beispiel.:

In der Textarea schreibt man seinen gewünschten Text. Markiert ihn einfach, drückt den button "kursiv" und schon wird der dazugehörige html-tag eingefügt.

Die Funktion:

function kursiv() {
var range = document.selection.createRange();
if(range.text)
range.text = '<i>' + range.text + '</i>';
else alert('Nichts Markiert');
}

nun funktioniert das im IExplorer und Opera wunderbar, aber leider nicht im Firefox. Soweit ich weiss (durch google) liegts wohl daran das FireFox das createRange() nicht in seiner DOM stehen hat.

Kann mir bitte jemand auf die Sprünge helfen wie ich das managen könnte?

Ich frage hier weil ich mir die anregung dazu mit BB geholt habe.

Grüße an die Community, rr

Verfasst: 08.09.2006 16:12
von easygo

Code: Alles auswählen

var range=false;
if(window.getSelection) { // for Netscape 6 and Mozilla
 range=window.getSelection().toString();
}
else if(document.selection) { //for Internet Explorer 5.5 +
 range=document.selection.createRange().text;
}
if(range)
...
Sollte dann auch den Firefox dazu bewegen. :wink: easy

Verfasst: 08.09.2006 16:35
von ronnyronnsen
hey. danke für die schnelle antwort.

So recht klappt es noch nicht.
habe einfach mal zum test ein

Code: Alles auswählen

function kursiv() {
	var range = window.getSelection().toString();
	if(range.text)
	range.text = '<i>' + range.text + '</i>';
    else alert('Nichts Markiert');
}
daraus gemacht.

Firefox meint darauf hin wenn ich meinen kursiv button drücke -> "nichts markiert"

Verfasst: 08.09.2006 16:54
von easygo
Klar, das Rote wär schon auch wichtig. Schau mal -->
easygo hat geschrieben:var range=false;
if(window.getSelection) { // for Netscape 6 and Mozilla
range=window.getSelection().toString();
}
else if(document.selection) { //for Internet Explorer 5.5 +
range=document.selection.createRange().text;
}
if(range)
...
Kanns aber leider nicht testen, bin grad busy.

Verfasst: 08.09.2006 17:11
von ronnyronnsen
Yes i know.

Ich hab folgende funktion:

Code: Alles auswählen

function kursiv() {
	
var range=false;
if(window.getSelection) { // for Netscape 6 and Mozilla
 range=window.getSelection().toString();
}
else if(document.selection) { //for Internet Explorer 5.5 +
 range=document.selection.createRange().text;
}
if(range) 
range.text = '<i>' + range.text + '</i>';
    else alert('Nichts Markiert');
}
wie gesagt..."Nichts markiert"