Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Text in Textarea mit wysiwyg-Editor automatisch ersetzen
#1
Sorry, ich hatte das im falschen Forum gepostet. Hab meinen Beitrag jetzt gemeldet, damit er gelöscht wird und setze ihn hierhin, wo er hingehört:


Hallo! :D
Ich habe zusammen mit der Google KI (weil ich das mit meinen Anfängerkenntnissen nicht allein hinkriege XD) ein js erstellt, dass einen Text automatisch abändern soll.
Zwischen zwei einfachen Textboxen funktioniert das auch toll. Ich gebe den Text in Textbox A ein, das js sucht die erste Zeile aus A in Textbox B (die immer gleich ist) und eine festgelegte Abschlusszeile (die immer gleich ist) in Textbox B und ersetzt den Text von Anfang bis Ende.
Also wenn da steht
 
Textbox A:
123
ABC
...</td></tr></table>
 
Textbox B:
lalelu
123
superkalifragilistigexpialigetisch
...</td></tr></table>
tritratrullala
 
sieht Textbox B nach dem ausführen des js so aus:
 
Textbox B:
lalelu
123
ABC
...</td></tr></table>
tritratrullala
 
 
 
Also das klappt :)
Allerdings nur in einfachen Textareas. Ich wollte das gerne auch in einer Textarea machen können, die mit dem wysiwyg-Editor verbunden ist (als beispiel vlt NewReply), aber irgendwie klappt es da nicht. Die texte können gelesen werden (da shab ich geprüft), aber nicht ersetzt. Google KI sagt, dass der Editor das irgendwie blockiert.
 
Kann mir da jemand helfen? Die Google KI ist davon auch überfordert. Die redet etwas von API und da bin ich dann raus gewesen. XD
 
Was braucht ihr, um mir helfen zu können?
 
 
Hier schonmal der js-Code, heißt bei mir "steckbrief_tools.js" und liegt direkt im MYBB Ordner herum (wichtig für den Aufruf unten, falls ihn jemand ausprobieren will):
 

Code:
document.addEventListener('DOMContentLoaded', function() {
    const ersetzenButton = document.getElementById('steckbrief-ersetzen-button');
    const meldungDiv = document.getElementById('ersetz-meldung');
    const steckbriefEingabe = document.getElementById('steckbrief-eingabe-cp');
    const quellcodeEditor = document.querySelector('textarea[id="steckbrief-cp"]');
    ersetzenButton.addEventListener('click', function() {
        if (!quellcodeEditor) {
            alert('Quellcode-Editor nicht gefunden. Bitte stelle sicher, dass du dich im Quellcode-Modus befindest.');
            return;
        }
        const neuerSteckbrief = steckbriefEingabe.value;
        const startZeile = neuerSteckbrief.split('\n')[0]; // Erste Zeile aus der Eingabe
        const startMarker = startZeile.substring(0, startZeile.indexOf('</div>[/size][/b]') + '</div>[/size][/b]'.length); // Bis zum Ende des ersten Div
        const endMarker = '</td></tr></table>';
        const quellcodeInhalt = quellcodeEditor.value;
        const startIndex = quellcodeInhalt.indexOf(startMarker);
        if (startIndex === -1) {
            alert('Start des Steckbriefcodes nicht im Quelltext gefunden.');
            return;
        }
        const endIndex = quellcodeInhalt.indexOf(endMarker, startIndex);
        if (endIndex === -1) {
            alert('Ende des Steckbriefcodes nicht im Quelltext gefunden.');
            return;
        }
        const neuerInhalt = quellcodeInhalt.substring(0, startIndex) + neuerSteckbrief + quellcodeInhalt.substring(endIndex + endMarker.length);
        quellcodeEditor.value = neuerInhalt;
        meldungDiv.style.display = 'block';
        setTimeout(function() {
        meldungDiv.style.display = 'none';
        }, 3000);
    });
});

 
Aktuell bezieht er sich NICHT auf das Newreply-Textarea (id="message") sondern auf "Textbox"-Textarea ( id="steckbrief-cp"). Wenn der js mit Newreply ausprobiert werden soll, bitte
diese Stelle
Code:
const quellcodeEditor = document.querySelector('textarea[id="steckbrief-cp"]');

ändern zu:
Code:
const quellcodeEditor = document.querySelector('textarea[id="message"]');

 
 
 
Der Templateschnippsel, den man in newreply einbauen kann, ganz unten, direkt über {footer}:
Code:
<!-- Neuen Textfenster, Button und Popup für automatisches Einfügen -->
            <br/>
<div id="steckbrief-tools">
               <textarea id="steckbrief-eingabe-cp" rows="5" cols="60" placeholder="Hier den kopierten Steckbriefcode einfügen"></textarea><br>
               <button id="steckbrief-ersetzen-button" type="button">Steckbrief einfügen & ersetzen</button>
               <div id="ersetz-meldung" style="display:none; margin-top: 10px; color: green;">Erfolgreich!</div>
               <textarea id="steckbrief-cp" rows="5" cols="60" placeholder="Textbox"></textarea><br>
           </div>
<!-- Neues Script für automatisches Einfügen -->
<script src="/mybb/steckbrief_tools.js"></script>
 
Er baut 2 Textfelder und den Button ein und verlinkt zu dem js Dokument.
 
Also falls jemand mir da helfen könnte, dass das nicht nur zwischen den beiden Textfenstern funktioniert, sondern direkt im Newreply-Fenster, wär das awesome! :D
 


Und sorry nocmal für den Thread im falschen Unterforum >_<
Zitieren
#2
also ich versteh nicht mal, was du damit überhaupt bezweckst Huh

von JavaScript habe ich so viel Ahnung wie vom Mondflug, also bin ich eh raus Wink

KI programmiert, KI macht Musik, KI erstellt Videos, KI schreibt ganze Bücher
da können wir den Menschen doch jetzt eigentlich mal endlich abschaffen
Einmal zu oft Terminator geschaut habe, aber ich mag einfach keine KI Wink
Kein Support per PN, Mail, Telefon, Hausbesuch, Discord, Telegram, WhatsApp und anderen nutzlosen Tools
Zitieren
#3
Ich habe Tabellencode für Steckbriefe für Charaktere. Ich will alte Steckbriefe (die ich in einer Maske vorbereite) gegen neue austauschen, ohne jedes mal alles manuell zu suchen.

Ist halt wirklich nur ein "Überschreibe Text" Script, dass aber am Editor nicht vorbeikommt
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Inhalt textarea Feld ausgeben prom.night 3 1.994 27.03.2021, 12:06
Letzter Beitrag: prom.night