auf selektierten Text zugreifen?
$xNeTworKx
- javascript
Grüß euch,
Gibt es mit Javascript irgendwie eine Möglichkeit, einen in einem <textarea> Feld mit der Maus markierten Text irgendwie zu erkennen?
Ich glaube fast nicht, aber ich will ganz sicher gehen, somit frage ich mal.
$xNeTworKx.
Hallo $xNeTworKx,
hab grad das hier gefunden:
http://forum.de.selfhtml.org/archiv/2001/7/26361/
Schöne Grüße aus Köln-Ehrenfeld,
Elya
Hallo,
vielen Dank. ich habe ständig nach "auf selektierten Text zugreifen" gesucht und wahrscheinlich deswegen zuerst nichts gefunden, aber das, was ich zuerst gefunden habe, brauche ich jetzt auch :) (http://forum.de.selfhtml.org/archiv/2002/8/19281/)
$xNeTworKx.
Hi nochmal,
Es scheint irgendwie, ob Opera (7)keine von beiden Methoden akzeptiert. Ich nehme mal an, bei Opera gibt es kein Workaround, oder doch?
$xNeTworKx.
Nachtrag:
Ich bin draufgekommen, wenn man 3 gleiche Sätze in das Formularfeld eingibt und im letzten Satz ein Wort transformieren will, wird das erstgefundene Wort geändert, dH im ersten Satz, obwohl der letzte Satz markiert wurde? Warum ist das so und was kann ich da tun?
$xneTworKx.
Ich habe den LInk vergessen:
http://test.acid4u.com/selektierten_text_aendern.html
Moin $xneTworKx,
Vermutung: Variable textstring hat einen Wert zugewiesen bekommen, aus der Markierung. Dann wird in dem Formular-Feld dieser Wert gesucht, und beim _ersten_ Auftauchen ersetzt - und dann ist die Funktion abgearbeitet.
Ich würde mal probieren, innerhalb der Funktion dem Textstring temporär einen anderen Wert zuzuweisen (idealerweise gleiche Zeichenkettenlänge) und dann zu ersetzen ...? Sollte eigentlich nicht auffallen. Ist aber nur so eine Idee am frühen Morgen nach der ersten Tasse Kaffee und 5 Stunden Schlaf ;-) , schreib mal ob's klappt.
Schöne Grüße aus Köln-Ehrenfeld,
Elya
Hallo $xNeTworKx,
Ich bin draufgekommen, wenn man 3 gleiche Sätze in das Formularfeld eingibt und im letzten Satz ein Wort transformieren will, wird das erstgefundene Wort geändert, dH im ersten Satz, obwohl der letzte Satz markiert wurde? Warum ist das so und was kann ich da tun?
Elya hat Recht, du führst ein replace() im gesamten Text durch, und das ist völlig unabhängig von deiner Markierung. Du kannst aber im IE direkt auf die Markierung zugreifen, und im Mozilla hast du die Endpunkte und kommst mit substring weiter. Außerdem würde ich nicht eine Unterscheidung nach navigator.appName machen, sondern die Objekte abfragen, die ich benutzen will. Etwa so:
var textarea = document.getElementById('textarea');
var neuerText = "Hallo";
if (document.selection) // IE4+
{
var markierung = document.selection.createRange();
if (markierung.parentElement() == textarea && markierung.text != "")
markierung.text = neuerText;
}
else if (textarea.setSelectionRange) // Moz 1.3+
{
if (textarea.selectionStart != textarea.selectionEnd)
textarea.value = textarea.value.substring(0, textarea.selectionStart) + neuerText + textarea.value.substring(textarea.selectionEnd, textarea.value.length);
}
Es sind natürlich beides proprietäre Lösungen. Der IE kann das seit vielen Jahren, und bei Mozilla hat man offenbar erkannt, dass man auf die Schnarchnasen vom W3C nicht immer warten kann.
Grüße, Stefan
Hallo,
sorry, aber mit diesem Code funktioniert leider gar nichts mehr. Ich werde mich einfach noch ein bißchen herumspielen, vielleicht bekomme ich es noch hin.
$xNeTworKx.
Hallo $xNeTworKx,
sorry, aber mit diesem Code funktioniert leider gar nichts mehr.
Du musst ihn natürlich richtig einsetzen, z.B. die Variable textarea muss auch deine Textarea ansprechen, es muss alles in einer Funktion stehen usw...
Aber ich denke, das kriegst du schon hin.
Grüße, Stefan