Zum Inhalt springen

[Javascript] Text beim cursor einfügen


geloescht_JesterDay

Empfohlene Beiträge

Hallo,

also wie in der Überschrift steht, geht es darum, mithilfe von Javascript einen Text in eine Textarea einzufügen. Das funktioniert soweit auch schon, aber: Nach dem Einfügen springt Firefox wieder an den Anfang des Textes nicht an die markierte Stelle (oder da wo der Cursor steht). Mit dem IE klappt es, Opera hab ich noch nicht probiert.

Hab es auch mal hier im Forum probiert, hier passiert dasselbe. Wenn ich einen langen Text schreibe, der größer als die Textarea ist und am Ende dann einen Text markiere und ihn z.B fett mache, steht der Text danach wieder am anfang. Das kann nervig sein, wenn der Text lang ist und man mehrere solcher Änderungen (nicht von Hand) vornehmen will.

Ist das ein Fehler im Firefox oder fehlt da nur was?

Das Javascript findet sich z.B. hier: http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich würd sagen, das ist ein Fehler des FF.

Der Cursor wird ja an die position unten gesetzt,

nur das Textfeld scrollt in die 1. Zeile anstatt in die Zeile an der Cursor steht.

Vielleicht könntest du mit folgenden Ansatz einen workaround erreichen:

- Zeile berechnen, in der der Text eingefügt wurde

- Prüfen ob die Zeile höher ist als die möglich anzuzeigende anzahl Zeilen

- ggf. die Textarea runterscrollen zur angegebenen Zeile

Ob es entsprechende funktionen gibt um die textarea zu scrollen usw kann ich dir nicht sagen...

Gruß,

Markus

Edit:

Ich hab ein Script gefunden, dass eine Textarea scrollen können soll...

ist aber ungetestet!

http://www.jsmadeeasy.com/javascripts/Scrolling/Scrolling%20Textarea/index.htm

hier gibs ne ganze menge Javascripts:

http://www.jsmadeeasy.com/javascripts/Scrolling/list_test.asp

Edit2:

hm ich hab wohl das script falsch verstanden...

ich hab das jetzt ma lokal getestet, aber der scrollt nicht die textarea, sondern fügt einfach zeile für zeile text hinzu....

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Jahre später...

Mal in den Tiefen des Boards gebuddelt... :old

Wenn ich einen langen Text schreibe, der größer als die Textarea ist und am Ende dann einen Text markiere und ihn z.B fett mache, steht der Text danach wieder am anfang.

Gibt es dafür inzwischen eine Lösung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gibt es dafür inzwischen eine Lösung?

Hättest du doch selber probieren können :upps :D

Hab gerade einen langen Lorem Ipsum hier eingefügt und am Ende ein Wort fett gemacht... und er blieb stehen.

FF 2.0.0.4 (Kubuntu)

Also scheint es wohl ein FF Problem gewesen zu sein. Wie ich das damals "gelöst" hab weiß ich nicht mehr.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jup, hätte man mal machen können :rolleyes:

Allerdings funktioniert es nur hier, in anderen Foren nicht - also keine Browser-, sondern Scriptsache.

Hab mal versucht, mich hier in die Quellen einzuwühlen, sehe da aber ehrlich gesagt nicht durch.

Wenn also jemand Rat und/oder ein hilfreiches Script weiß...

Merci!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jup, MediaWiki macht bei mir auch, was es soll. Es geht um eine eigene Seite, folgender (vereinfachter) Code:

<html>
<head>
<script type="text/javascript">
<!--
function insert(aTag, eTag) {
var input = document.forms['form'].elements['pagecontent'];
input.focus();
/* für Internet Explorer */
if(typeof document.selection != 'undefined') {
/* Einfügen des Formatierungscodes */
var range = document.selection.createRange();
var insText = range.text;
range.text = aTag + insText + eTag;
/* Anpassen der Cursorposition */
range = document.selection.createRange();
if (insText.length == 0) {
range.move('character', -eTag.length);
} else {
range.moveStart('character', aTag.length + insText.length + eTag.length);
}
range.select();
}
/* für neuere auf Gecko basierende Browser */
else if(typeof input.selectionStart != 'undefined')
{
/* Einfügen des Formatierungscodes */
var start = input.selectionStart;
var end = input.selectionEnd;
var insText = input.value.substring(start, end);
input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
/* Anpassen der Cursorposition */
var pos;
if (insText.length == 0) {
pos = start + aTag.length;
} else {
pos = start + aTag.length + insText.length + eTag.length;
}
input.selectionStart = pos;
input.selectionEnd = pos;
}
/* für die übrigen Browser */
else
{
/* Abfrage der Einfügeposition */
var pos;
var re = new RegExp('^[0-9]{0,3}$');
while(!re.test(pos)) {
pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
}
if(pos > input.value.length) {
pos = input.value.length;
}
/* Einfügen des Formatierungscodes */
var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
}
}
--></script>
</head>
<body>
<img src="egal" onClick="insert('[element|', ']')" /><br />
<form name="form">
<textarea name="pagecontent">text
text
mehr text
...man
muß
scrollen
</textarea>
</form>
</body>
</html>[/PHP]

Seite aufrufen, in der Textarea den Cursor auf die letzte Zeile stellen, Bild über der Textarea anklicken.

In IE (6.0) und Opera (9.10) fügt er "[element|]" ein und läßt die Scrollposition des Textfeldes dann ganz unten stehen.

Im Firefox (2.0.0.4) wird auch "[element|]" eingefügt, der Cursor bleibt auch in der letzten Zeile - aber der Scrollbalken "springt" nach ganz oben. Nicht tödlich, aber bisweilen schon sackig.

Das insert-Script habe ich nicht selbst geschrieben. Meine Frage ist nun: Haben MediaWiki, FCKEditor & Co. Code in ihren Scripts, der den Scrollbalken der Textarea auch im Firefox wieder an die Einfügeposition setzt - oder hab ich im geposteten Script meiner Seite etwas übersehen, das die Textarea wieder hochscrollen läßt? Letztenendes wird doch nur der gegebene Text eingefügt und der Cursor zwischen Anfang- und Endstring gesetzt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...