Suche…


Syntax

  • Bool unterstützt = document.execCommand (Befehlsname, showDefaultUI, valueArgument)

Parameter

commandId Wert
⋮ Inline-Formatierungsbefehle
Hintergrundfarbe Farbwert String
Fett gedruckt
Link erstellen URL-String
Schriftartenname Name der Schriftfamilie
Schriftgröße 1, 2, 3, 4, 5, 6, 7
Vordergrundfarbe Farbwert String
Durchschlag
hochgestellt
Verknüpfung aufheben
⋮ Blockierungsbefehle blockieren
löschen
formatBlock "address", "dd", "div", "dt", "h1", "h2", "h3", "h4", "h5", "h6", "p", "pre"
vorwärts löschen
insertHorizontalRule
insertHTML HTML-String
Bild einfügen URL-String
insertLineBreak
insertOrderedList
insertAbsatz
insertText Textzeichenfolge
insertUnorderedList
justifyCenter
justifyFull
justifyLeft
justifyRight
herausragen
⋮ Befehle der Zwischenablage
Kopieren Derzeit ausgewählte Zeichenfolge
Schnitt Derzeit ausgewählte Zeichenfolge
Einfügen
⋮ Verschiedene Befehle
defaultParagraphSeparator
Wiederholen
Wählen Sie Alle
styleWithCSS
rückgängig machen
useCSS

Formatierung

Benutzer können contenteditable Dokumente oder Elemente mit den Funktionen ihres Browsers formatieren, z. B. gängige Tastenkombinationen für die Formatierung ( Strg-B für Fettdruck , Strg-I für Kursivschrift usw.) oder durch Ziehen und Ablegen von Bildern, Verknüpfungen oder Markierungen Zwischenablage.

Darüber hinaus können Entwickler mithilfe von JavaScript die aktuelle Auswahl (hervorgehobener Text) formatieren.

document.execCommand('bold', false, null); // toggles bold formatting
document.execCommand('italic', false, null); // toggles italic formatting
document.execCommand('underline', false, null); // toggles underline

Änderungen von Inhalten bearbeiten können

Ereignisse, die mit den meisten Formularelementen funktionieren (z. B. change , keydown , keyup , keypress ), funktionieren nicht mit contenteditable .

Stattdessen können Sie mit dem input Änderungen contenteditable Inhalte abhören. Angenommen, contenteditableHtmlElement ist ein JS-DOM-Objekt, das contenteditable :

contenteditableHtmlElement.addEventListener("input", function() {
    console.log("contenteditable element changed");
});

Fertig machen

Das HTML-Attribut contenteditable bietet eine einfache Möglichkeit, ein HTML-Element in einen vom Benutzer bearbeitbaren Bereich umzuwandeln

<div contenteditable>You can <b>edit</b> me!</div>

Native Rich-Text-Bearbeitung

Mit Hilfe von JavaScript und execCommand W3C Sie können zusätzlich weitere Bearbeitungsfunktionen auf das aktuell fokussierte passieren contenteditable Element (insbesondere an der Position der Einfügemarke oder Auswahl).

Die Funktionsmethode execCommand akzeptiert 3 Argumente

document.execCommand(commandId, showUI, value)
  • commandId String. aus der Liste der verfügbaren ** commandId ** s
    (siehe: Parameter → commandId )
  • showUI Boolean (nicht implementiert. false )
  • value String Wenn ein Befehl einen befehlsbezogenen String- Wert erwartet, andernfalls "" .
    (siehe: Parameter → Wert )

Beispiel mit dem Befehl "bold" und "formatBlock" (wobei ein Wert erwartet wird):

document.execCommand("bold", false, "");          // Make selected text bold
document.execCommand("formatBlock", false, "H2"); // Make selected text Block-level <h2>

Schnellstart-Beispiel:

<button data-edit="bold"><b>B</b></button>
<button data-edit="italic"><i>I</i></button>
<button data-edit="formatBlock:p">P</button>
<button data-edit="formatBlock:H1">H1</button>
<button data-edit="insertUnorderedList">UL</button>
<button data-edit="justifyLeft">&#8676;</button>
<button data-edit="justifyRight">&#8677;</button>
<button data-edit="removeFormat">&times;</button>

<div contenteditable><p>Edit me!</p></div>

<script>
[].forEach.call(document.querySelectorAll("[data-edit]"), function(btn) {
  btn.addEventListener("click", edit, false);
});

function edit(event) {
  event.preventDefault();
  var cmd_val = this.dataset.edit.split(":");
  document.execCommand(cmd_val[0], false, cmd_val[1]);
}
<script>

jsFiddle Demo
Grundlegendes Beispiel für Rich-Text-Editor (moderne Browser)

Abschließende Gedanken
Die Implementierung und das Verhalten von execCommand sind selbst für lange Zeit (IE6) sehr unterschiedlich und variieren von Browser zu Browser. execCommand macht es für jeden erfahrenen JavaScript-Entwickler schwierig, einen voll funktionsfähigen und execCommand WYSIWYG-Editor zu execCommand .
Auch wenn es noch nicht vollständig standardisiert ist, können Sie mit den neueren Browsern wie Chrome, Firefox und Edge recht ordentliche Ergebnisse erwarten. Wenn Sie eine bessere Unterstützung für andere Browser und weitere Funktionen wie die Bearbeitung von HTMLTable usw. benötigen, sollten Sie nach einem bereits vorhandenen und robusten Rich-Text- Editor suchen.

Kopieren in die Zwischenablage von textarea mit execCommand ("copy")

Beispiel:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <textarea id="content"></textarea>
    <input type="button" id="copyID" value="Copy" />
    <script type="text/javascript">
        var button = document.getElementById("copyID"),
            input = document.getElementById("content");

        button.addEventListener("click", function(event) {
            event.preventDefault();
            input.select();
            document.execCommand("copy");
        });
    </script>
</body>
</html>

document.execCommand("copy") kopiert die aktuelle Auswahl in die Zwischenablage



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow