|
Autor |
Mausklickoption für fett, kursiv, etc. im Editor |
|
Slash
Aktiv  Dabei seit: 23.03.2005 Mitteilungen: 9107
 | 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  Dabei seit: 15.10.2014 Mitteilungen: 2787
 | 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  Dabei seit: 01.10.2005 Mitteilungen: 6818
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. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 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]
|