Zur Navigation

Nach oben springen beim Klick auf "Link"

1 Lotti

Hallo Jörg!

Wenn man lange Texte schreibt und nachträglich formatieren oder ein Wort verlinken möchte, bekommt man ein Problem wenn man das unten über die Links macht und nicht von Hand tippt. Dann springt nämlich das was man im Textfeld sieht immer nach oben an den Anfang vom Text. Das kann man zwar überspielen indem man einfach mal irgendwas schreibt dann sieht man wieder wo man ist, aber bei komplizierten Texten die länger sind, bringt mich das immer aus dem Konzept. Stört das nur mich, oder ist das auch für Andere ein Problem?

Liebe Grüsse

Lotti

31.08.2005 00:51

2 Jörg Kruse

Hallo Lotti,

ja, unter den beschriebenen Umständen ist das in der Tat etwas irritierend.

JavaScript ist leider nicht so meine Stärke, deswegen war ich ganz froh, dass C)-(iLL@ mir netterweise sein Einfüge-Script zur Verfügung gestellt hat. Vielleicht kann er da noch etwas zu schreiben, inwieweit man an dem Problem etwas ändern kann

31.08.2005 14:12

3 C)-(iLL@

Ich habe das Problem per RSS mitbekommen (de facto nervt mich das auch), ich sehe mir mal abends an, ob sich da was machen lässt, das auf allen Browsern... und IE funktioniert.

31.08.2005 16:11

4 Lotti

Hi ihr!

Klasse, DANKE!! :-))

Liebe Grüsse

Lotti

31.08.2005 17:07

5 C)-(iLL@

Gut, das Problem betraf nur Netscape/Mozilla.
Opera hat es (wieder mal) nicht, ist eben ein super Browser - von der Qualität der Anzeige/Rendering kaum zu schlagen.
IE lässt das Scrolling der textarea auch von Haus aus in Ruhe, wenn Javascript den Inhalt neu schreibt.

function cur_ins(field, startTag, endTag, offset) {
   field.focus();
   if (document.getSelection) { //FF, NS
     var scrollTop, scrollLeft;
     if (field.type == 'textarea' && typeof field.scrollTop != 'undefined') {
       scrollTop = field.scrollTop;
       scrollLeft = field.scrollLeft;
     }
	   selStart = field.selectionStart;
   selEnd = field.selectionEnd;
   text = field.value.substring(selStart, selEnd);
   field.value = field.value.substring(0, selStart) + startTag + text + endTag + field.value.substring(selEnd);
   if (typeof scrollTop != 'undefined') {
     field.scrollTop = scrollTop;
     field.scrollLeft = scrollLeft;
   }
   if (text.length > 0) {
     if (offset != 0) {
       field.selectionEnd = selStart + startTag.length + text.length - offset;
     } else {
       field.selectionEnd = selStart + startTag.length + text.length + endTag.length;
     }
   } else {
      field.selectionEnd = selStart + startTag.length;
   }
   field.selectionStart = field.selectionEnd;
 } else
 if (document.selection) { //IE
     marker = document.selection.createRange();
     text = marker.text;
     marker.text = startTag+text+endTag;
     marker = document.selection.createRange();
     if (text.length > 0) {
       if (offset != 0) {
         marker.move('character', startTag.length + text.length - offset);
       } else {
         marker.move('character', startTag.length + text.length + endTag.length + offset);
       }
     } else {
       marker.move('character', -(endTag.length));
     }
     marker.select();
  }
}

Getestet auf FF 1.06 / NS 7.1/8 - Opera 8 - IE6, sollte funktionieren. ;)

31.08.2005 20:41

6 Jörg Kruse

Super, ich hab's gleich eingebaut, klappt hervorragend - Danke dir :)!

31.08.2005 21:44

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]