Поиск…
Синтаксис
- bool supported = document.execCommand (commandName, showDefaultUI, valueArgument)
параметры
| commandId | значение |
|---|---|
| ⋮ Встроенные команды форматирования | |
| BACKCOLOR | Значение цвета String |
| смелый | |
| createLink | URL-строка |
| Fontname | Имя семейства шрифтов |
| размер шрифта | «1», «2», «3», «4», «5», «6», «7», |
| ForeColor | Значение цвета String |
| зачеркивания | |
| верхний индекс | |
| разъединить | |
| ⋮ Команды форматирования блоков | |
| удалять | |
| formatBlock | «ht», «h», «h», «h», «p», «pre», |
| forwardDelete | |
| insertHorizontalRule | |
| insertHTML | HTML-строка |
| insertImage | URL-строка |
| insertLineBreak | |
| insertOrderedList | |
| insertParagraph | |
| InsertText | Текстовая строка |
| insertUnorderedList | |
| justifyCenter | |
| justifyFull | |
| justifyLeft | |
| justifyRight | |
| Выступ | |
| ⋮ Команды буфера обмена | |
| копия | Текущая выбранная строка |
| резать | Текущая выбранная строка |
| вставить | |
| ⋮ Различные команды | |
| defaultParagraphSeparator | |
| переделывать | |
| выбрать все | |
| styleWithCSS | |
| расстегивать | |
| useCSS |
форматирование
Пользователи могут добавлять форматирование в contenteditable документы или элементы, используя функции своего браузера, такие как общие сочетания клавиш для форматирования ( Ctrl-B для жирного шрифта , Ctrl-I для курсива и т. Д.) Или путем перетаскивания изображений, ссылок или разметки из буфер обмена.
Кроме того, разработчики могут использовать JavaScript для применения форматирования к текущему выбору (выделенный текст).
document.execCommand('bold', false, null); // toggles bold formatting
document.execCommand('italic', false, null); // toggles italic formatting
document.execCommand('underline', false, null); // toggles underline
Прослушивание изменений contenteditable
События, которые работают с большинством элементов формы (например, change , keydown , keyup , keypress ), не работают с contenteditable .
Вместо этого вы можете прослушивать изменения contenteditable контента с помощью input события. Предполагая, что contenteditableHtmlElement является объектом JS DOM, который является contenteditable :
contenteditableHtmlElement.addEventListener("input", function() {
console.log("contenteditable element changed");
});
Начиная
Атрибут HTML contenteditable обеспечивает простой способ превратить элемент HTML в редактируемую пользователем область
<div contenteditable>You can <b>edit</b> me!</div>
Редактирование собственного Rich-Text
Использование JavaScript и execCommand W3C вы можете дополнительно передать больше функций редактирования в настоящее время сосредоточены contenteditable элементов ( в частности , в позиции курсора или выбора).
execCommand функции execCommand принимает 3 аргумента
document.execCommand(commandId, showUI, value)
-
commandIdString. из списка доступных ** commandId ** s
(см .: Параметры → commandId ) -
showUIBoolean (не реализовано. Использоватьfalse) -
valueстроки Если команда ожидает команды , связанные с строковое значение, в противном случае"".
(см. Параметры → значение )
Пример использования "bold" команды и "formatBlock" (где , как ожидается , значение):
document.execCommand("bold", false, ""); // Make selected text bold
document.execCommand("formatBlock", false, "H2"); // Make selected text Block-level <h2>
Пример быстрого запуска:
<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 demo
Пример редактора Rich-Text (современные браузеры)
Последние мысли
Даже присутствуя в течение длительного времени (IE6), реализации и поведение execCommand варьируются от браузера к браузеру, что делает «создание полнофункционального и совместимого с несколькими браузерами WYSIWYG-редактора» трудной задачей для любого опытного разработчика JavaScript.
Даже если вы еще не полностью стандартизированы, вы можете ожидать довольно приличных результатов в новых браузерах, таких как Chrome, Firefox, Edge . Если вам нужна более эффективная поддержка для других браузеров и других функций, таких как редактирование HTMLTable и т. Д., Главное правило - искать уже существующий и надежный редактор Rich-Text .
Скопируйте в буфер обмена из textarea с помощью execCommand («copy»)
Пример:
<!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") копирует текущий выбор в буфер обмена