Matroids Matheplanet Forum Index
Moderiert von matroid Gockel
Matheplanet » Bug- und Request-Tracker » Mausklickoption für fett, kursiv, etc. im Editor
Autor
Kein bestimmter Bereich Mausklickoption für fett, kursiv, etc. im Editor
Slash
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.03.2005
Mitteilungen: 8889
Wohnort: Sahlenburg (Cuxhaven)
  Themenstart: 2021-11-02

Hi, beim Schreiben längerer Text habe ich mir schon immer eine Funktion in diesem Editor gewünscht, mit der man ein Wort markieren und dann mit einem Klick auf ein entsprechendes Tag unter dem Textfenster das Wort in die entsprechenden HTML Tags setzen kann. Vielleicht wäre das ja auch für andere ein Erleichterung. Gruß, Slash


   Profil
tactac
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 15.10.2014
Mitteilungen: 2440
  Beitrag No.1, eingetragen 2021-11-03

Man könnte bei der Gelegenheit auch gleich das Verhalten der anderen Editier-Schaltflächen verändern. Momentan bewirken die ja gar nichts, wenn ein Text mit Länge > 0 markiert ist. Stattdessen könnte der markierte Text etwa eine Linkbeschriftung werden oder der Inhalt eines Code-Blocks. Hier eine etwas aufgeräumte und flexiblere Version der Funktion insertAtCaret, die (u.a.?) von reply.php ausgeliefert wird: \sourceon JavaScript /** * Ersetzt markierten Text mit einem Ersetzungstext. * Bsp.-Benutzungen: * * `onclick="insertAtCaret(document.coolsus.message,'??','hier');"` * * `onclick="insertAtCaret(document.coolsus.message,'??@');"` * * @param {*} textEl Eingabeelement * @param {*} text Ersetzungstext mit optionalen Platzhaltern '@' (für Cursor-Position) bzw. '??' (für vorher markierten Text) * @param {*} deflt Was bei ?? eingesetzt werden soll, falls markierter Text Länge 0 hat. */ function insertAtCaret(textEl, text, deflt = "") { let startPos = textEl.selectionStart; let endPos = textEl.selectionEnd; let scrollTop = textEl.scrollTop; let highlighted = textEl.value.substring(startPos, endPos); let thepos = text.search('@'); if(thepos < 0) thepos = text.length; let prefix = text.substring(0, thepos); let suffix = text.substring(thepos + 1); prefix = prefix.replace('??', highlighted ? highlighted : deflt); suffix = suffix.replace('??', highlighted ? highlighted : deflt); textEl.value = textEl.value.substring(0, startPos) + prefix + suffix + textEl.value.substring(endPos); textEl.focus(); let cPos = startPos + prefix.length; textEl.selectionStart = cPos; textEl.selectionEnd = cPos; textEl.scrollTop = scrollTop; } \sourceoff


   Profil
Bernhard
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 01.10.2005
Mitteilungen: 6634
Wohnort: Merzhausen, Deutschland
  Beitrag No.2, eingetragen 2021-11-04

Hallo Slash & tactac! Ja, das wäre eine schöne Bereicherung für den Planeten und eine Erleichterung beim Schreiben. Ich hatte mal versucht, solche und ähnliche Funktionen mit AutoHotkey für mich persönlich zu erstellen, aber das ist natürlich aufwendiger, wenn man die Funktionen über ein Menü und mit der Maus auslösen will. Möglich ist aber: \sourceonAHK #b:: Send, {Ctrl down}c{Ctrl up} ; Kopiert den markierten Text. SendInput, {Ctrl down}v{Ctrl up} ; Umschließt den markierten Text mit HTMLCode-Tags return \sourceoff Damit würde eine markierte Passage durch drücken von B bei angehaltener Windows-Taste in HTML-b-Tags gerahmt und damit fett gesetzt. Viele Grüße, Bernhard Edit: Vielleicht wird jemand gemerkt haben, daß der Code, den ich zuerst oben vorgestellt hatte, das markierte Wort gleich ganz verschwinden läßt bzw. dem Eingabebefehl überschreibt. Jetzt habe ich einen etwas eleganteren dorthingesetzt, der auch funktioniert.


   Profil
Slash hat die Antworten auf ihre/seine Frage gesehen.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2022 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]