도전 과제:
Contenteditable div에서 키 누르기 이벤트 캡처 Enter 키를 눌렀을 때 텍스트 입력을 방지하는 데 사용할 수 있습니다. 원하는 삽입 지점에 커서를 놓고 HTML(예:
태그)을 일반 텍스트로 표시하지 않고 삽입하는 방법을 찾습니다.
해결책:
Range.pasteHTML()을 사용하면 IE에서 작동하지만 다른 브라우저에서는 HTML 태그를 텍스트로 표시합니다. 다음 기능을 사용하면 모든 주요 브라우저에 HTML을 삽입하고 선택한 경우 기존 텍스트를 바꿀 수 있습니다.
function pasteHtmlAtCaret(html) { var sel, range; if (window.getSelection) { // IE9 and non-IE sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); range.deleteContents(); // Create a document fragment from the HTML string var el = document.createElement("div"); el.innerHTML = html; var frag = document.createDocumentFragment(); while ((node = el.firstChild)) { frag.appendChild(node); } range.insertNode(frag); // Preserve the selection after the inserted content if (frag.lastChild) { range = range.cloneRange(); range.setStartAfter(frag.lastChild); range.collapse(true); sel.removeAllRanges(); sel.addRange(range); } } } else if (document.selection && document.selection.type != "Control") { // IE < 9 document.selection.createRange().pasteHTML(html); } }
향상된 기능(2013년 8월):
에 대한 응답 사용자 요청에 따라 삽입된 콘텐츠를 선택해야 하는지 여부를 지정하는 추가 매개변수가 추가되었습니다.
function pasteHtmlAtCaret(html, selectPastedContent) { // Similar functionality as the original function // ... }
이 업데이트된 기능을 사용하면 HTML 콘텐츠 삽입 후 선택 동작을 제어할 수 있습니다.
위 내용은 캐럿 위치에서 Contenteditable DIV에 HTML을 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!