Recherche…
Syntaxe
- bool supported = document.execCommand (commandName, showDefaultUI, valueArgument)
Paramètres
commandId | valeur |
---|---|
⋮ Commandes de formatage en ligne | |
couleur de fond | Valeur de couleur Chaîne |
audacieux | |
créerLien | Chaîne d'URL |
fontName | Nom de famille de la police |
taille de police | "1", "2", "3", "4", "5", "6", "7" |
couleur de premier plan | Valeur de couleur Chaîne |
grève | |
exposant | |
dissocier | |
⋮ Bloquer les commandes de formatage | |
effacer | |
formatBlock | "adresse", "dd", "div", "dt", "h1", "h2", "h3", "h4", "h5", "h6", "p", "pre" |
forwardDelete | |
insertHorizontalRule | |
insertHTML | Chaîne HTML |
Insérer une image | Chaîne d'URL |
insertLineBreak | |
insertOrderedList | |
insertParagraph | |
insertText | Chaîne de texte |
insertUnorderedList | |
justifierCenter | |
justifier | |
justifier | |
justifierRight | |
dépassé | |
⋮ Commandes du Presse-papiers | |
copie | Chaîne actuellement sélectionnée |
Couper | Chaîne actuellement sélectionnée |
coller | |
⋮ Commandes diverses | |
defaultParagraphSeparator | |
refaire | |
tout sélectionner | |
styleWithCSS | |
annuler | |
utiliserCSS |
Mise en forme
Les utilisateurs peuvent ajouter un formatage à contenteditable
documents ou éléments en utilisant les fonctionnalités de leur navigateur, comme les raccourcis clavier communs pour le formatage (Ctrl-B pour le gras, Ctrl-I pour italique, etc.) ou par glisser-déposer des images, des liens ou le balisage de la presse-papiers
En outre, les développeurs peuvent utiliser JavaScript pour appliquer la mise en forme à la sélection en cours (texte en surbrillance).
document.execCommand('bold', false, null); // toggles bold formatting
document.execCommand('italic', false, null); // toggles italic formatting
document.execCommand('underline', false, null); // toggles underline
Ecouter les changements de contenu
Les événements qui travaillent avec la plupart des éléments de forme (par exemple, le change
, keydown
, keyup
, keypress
) ne fonctionnent pas avec contenteditable
.
Au lieu de cela, vous pouvez écouter les changements de contenteditable
contenu avec l' input
événement. En supposant que contenteditableHtmlElement
est un objet DOM JS pouvant être contenteditable
:
contenteditableHtmlElement.addEventListener("input", function() {
console.log("contenteditable element changed");
});
Commencer
L'attribut HTML contenteditable
fournit un moyen simple de transformer un élément HTML en une zone modifiable par l'utilisateur
<div contenteditable>You can <b>edit</b> me!</div>
Édition native de texte enrichi
En utilisant JavaScript et execCommand
W3C, vous pouvez en outre transmettre plus de fonctionnalités d'édition à l'élément contenteditable
actuellement ciblé (en particulier à la position ou à la sélection du curseur).
La méthode de la fonction execCommand
accepte 3 arguments
document.execCommand(commandId, showUI, value)
-
commandId
String. de la liste des ** commandId ** s disponibles
(voir: Paramètres → commandId ) -
showUI
Boolean (non implémenté. Utiliserfalse
) -
value
String Si une commande attend une valeur de chaîne liée à la commande, sinon""
.
(voir: Paramètres → valeur )
Exemple utilisant la commande "bold"
et "formatBlock"
(où une valeur est attendue):
document.execCommand("bold", false, ""); // Make selected text bold
document.execCommand("formatBlock", false, "H2"); // Make selected text Block-level <h2>
Exemple de démarrage rapide:
<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">⇤</button>
<button data-edit="justifyRight">⇥</button>
<button data-edit="removeFormat">×</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 démo
Exemple de base de l'éditeur de texte enrichi (navigateurs modernes)
Dernières pensées
Même être présent pendant une longue période (IE6), les implémentations et les comportements de execCommand
varient d'un navigateur à l'autre.
Même s'ils ne sont pas encore totalement standardisés, vous pouvez vous attendre à des résultats assez corrects sur les nouveaux navigateurs tels que Chrome, Firefox, Edge . Si vous avez besoin d'une meilleure prise en charge des autres navigateurs et de fonctionnalités telles que l'édition HTMLTable, etc., une règle générale consiste à rechercher un éditeur de texte riche et existant .
Copier dans le presse-papier à partir de textarea en utilisant execCommand ("copy")
Exemple:
<!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")
copie la sélection en cours dans le presse-papiers