수색…


통사론

  • bool 지원 = document.execCommand (commandName, showDefaultUI, valueArgument)

매개 변수

commandId
‧ 인라인 서식 지정 명령
backColor 색상 값 문자열
대담한
createLink URL 문자열
fontName 글꼴 패밀리 이름
fontSize "1", "2", "3", "4", "5", "6", "7"
foreColor 색상 값 문자열
파업
위에 쓴
풀리다
 블록 서식 지정 명령
지우다
formatBlock "hd", "h1", "h2", "h3", "h4", "h5", "h6", "p", "pre"
forwardDelete
insertHorizontalRule
insertHTML HTML 문자열
insertImage URL 문자열
insertLineBreak
insertOrderedList
insertParagraph
insertText 텍스트 문자열
insertUnorderedList
justifyCenter
justifyFull
justifyLeft
justifyRight
부주의 한
Ï 클립 보드 명령
현재 선택된 문자열
절단 현재 선택된 문자열
Ï 기타 명령
defaultParagraphSeparator
다시 하다
selectAll
styleWithCSS
끄르다
CSS 사용

서식 지정

사용자에 서식을 추가 할 수 contenteditable (등, 기울임에 대한 대담에서 Ctrl-I에 대한 Ctrl 키-B)를 포맷하거나으로부터 이미지, 링크, 또는 마크 업을 드래그 앤 드롭하여 같은 일반적인 키보드 단축키와 같은 브라우저의 기능을 사용하여 문서 또는 요소 클립 보드.

또한 개발자는 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>

네이티브 서식있는 텍스트 편집

JavaScriptexecCommand W3C 를 사용하면 현재 포커스가있는 contenteditable 요소 (특히 캐럿 위치 또는 선택 영역)에 더 많은 편집 기능을 추가로 전달할 수 있습니다.

execCommand 함수 메소드는 3 개의 인수를받습니다.

document.execCommand(commandId, showUI, value)
  • commandId String. 사용 가능한 ** commandId ** s 목록에서
    (참조 : 매개 변수 → commandId )
  • showUI Boolean (구현되지 않음, false 사용)
  • value String 명령에 명령 관련 문자열 이 필요한 경우, 그렇지 않으면 "" 입니다.
    (참조 : 매개 변수 → 값 )

"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">&#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 데모
기본 서식있는 텍스트 편집기 예제 (최신 브라우저)

마지막 생각들
오랜 시간 동안 (IE6) 존재하는 경우에도 execCommand 구현 및 동작은 브라우저마다 다르며 숙련 된 JavaScript 개발자에게는 "완벽한 기능을 갖춘 브라우저 간 호환 WYSIWYG 편집기"를 만드는 것이 어렵습니다.
아직 완전히 표준화되지는 않았지만 Chrome, Firefox, Edge 와 같은 최신 브라우저에서 꽤 괜찮은 결과를 기대할 수 있습니다. 다른 브라우저 및 HTMLTable 편집 등과 같은 더 많은 기능을 더 잘 지원해야하는 경우 이미 존재 하고 강력한 서식있는 텍스트 편집기를 찾아야합니다.

execCommand ( "copy")를 사용하여 textarea에서 클립 보드로 복사

예:

<!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") 현재 선택을 클립 보드에 복사합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow