Szukaj…
Składnia
- bool obsługiwane = document.execCommand (nazwa polecenia, showDefaultUI, wartośćArgument)
Parametry
CommandId | wartość |
---|---|
Commands Wbudowane polecenia formatowania | |
backColor | Wartość koloru Ciąg |
pogrubienie | |
createLink | Ciąg adresu URL |
Nazwa czcionki | Nazwa rodziny czcionek |
rozmiar czcionki | „1”, „2”, „3”, „4”, „5”, „6”, „7” |
foreColor | Wartość koloru Ciąg |
przekreślenie | |
napisany u góry | |
odczepić | |
⋮ Blokuj polecenia formatowania | |
usunąć | |
formatBlock | „adres”, „dd”, „div”, „dt”, „h1”, „h2”, „h3”, „h4”, „h5”, „h6”, „p”, „pre” |
dalej Usuń | |
insertHorizontalRule | |
insertHTML | Ciąg HTML |
Umieść obraz | Ciąg adresu URL |
insertLineBreak | |
insertOrdersList | |
insertParagraph | |
insertText | Ciąg tekstowy |
insertUnorderedList | |
justifyCenter | |
justifyFull | |
justifyLeft | |
justifyRight | |
bezczynny | |
Commands Polecenia ze schowka | |
Kopiuj | Aktualnie wybrany ciąg |
skaleczenie | Aktualnie wybrany ciąg |
pasta | |
⋮ Różne polecenia | |
defaultParagraphSeparator | |
przerobić | |
Zaznacz wszystko | |
styleWithCSS | |
Cofnij | |
useCSS |
Formatowanie
Użytkownicy mogą dodawać formatowanie do dokumentów lub elementów, które można contenteditable
, korzystając z funkcji przeglądarki, takich jak typowe skróty klawiaturowe do formatowania ( Ctrl-B dla pogrubienia , Ctrl-I dla kursywy itp.) Lub przeciągając i upuszczając obrazy, łącza lub znaczniki z schowek.
Ponadto programiści mogą korzystać z JavaScript, aby zastosować formatowanie do bieżącego zaznaczenia (podświetlony tekst).
document.execCommand('bold', false, null); // toggles bold formatting
document.execCommand('italic', false, null); // toggles italic formatting
document.execCommand('underline', false, null); // toggles underline
Słuchanie zmian w contentediable
Zdarzenia, które działają z większością elementów formularza (np. change
, keydown
, keyup
, keypress
) nie działają z contenteditable
.
Zamiast tego można nasłuchiwać zmian treści, które można contenteditable
za pomocą zdarzenia input
. Zakładając, że contenteditableHtmlElement
jest obiektem JS DOM, który jest contenteditable
:
contenteditableHtmlElement.addEventListener("input", function() {
console.log("contenteditable element changed");
});
Pierwsze kroki
Atrybut HTML contenteditable
zapewnia prosty sposób zamienić element HTML w obszarze użytkownika można edytować
<div contenteditable>You can <b>edit</b> me!</div>
Natywna edycja tekstu sformatowanego
Korzystanie z JavaScript i execCommand
W3C Możesz dodatkowo przekazać więcej możliwości edytowania do aktualnie koncentruje contenteditable
elementu (konkretnie w pozycji karetki lub wybór).
execCommand
funkcji execCommand
przyjmuje 3 argumenty
document.execCommand(commandId, showUI, value)
-
commandId
String. z listy dostępnych ** CommandId ** s
(patrz: Parametry → commandId ) -
showUI
Boolean (nie zaimplementowany. Użyjfalse
) -
value
String Jeśli komenda spodziewa wartość String związane polecenia-, inaczej""
.
(patrz: parametry → wartość )
Przykład stosując "bold"
polecenie i "formatBlock"
(gdzie oczekuje się, że wartość):
document.execCommand("bold", false, ""); // Make selected text bold
document.execCommand("formatBlock", false, "H2"); // Make selected text Block-level <h2>
Przykład szybkiego uruchomienia:
<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>
Demo jsFiddle
Przykład podstawowego edytora tekstu sformatowanego (nowoczesne przeglądarki)
Końcowe przemyślenia
Nawet od dłuższego czasu (IE6), implementacje i zachowania execCommand
różnią się w zależności od przeglądarki, co sprawia, że „zbudowanie w pełni funkcjonalnego i kompatybilnego z przeglądarkami edytora WYSIWYG” jest trudnym zadaniem dla każdego doświadczonego programisty JavaScript.
Nawet jeśli nie są jeszcze w pełni znormalizowane, możesz spodziewać się całkiem przyzwoitych wyników w nowszych przeglądarkach, takich jak Chrome, Firefox, Edge . Jeśli potrzebujesz lepszego wsparcia dla innych przeglądarek i innych funkcji, takich jak edycja HTMLTable itp., Podstawową zasadą jest poszukiwanie istniejącego i niezawodnego edytora Rich-Text .
Skopiuj do schowka z obszaru tekstowego przy użyciu execCommand („kopiuj”)
Przykład:
<!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")
kopiuje bieżące zaznaczenie do schowka