> 웹 프론트엔드 > JS 튜토리얼 > 모든 브라우저에서 ContentEditable Div의 커서 위치에 HTML을 삽입하는 방법은 무엇입니까?

모든 브라우저에서 ContentEditable Div의 커서 위치에 HTML을 삽입하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-17 11:52:01
원래의
444명이 탐색했습니다.

How to Insert HTML at the Cursor Position in a ContentEditable Div in All Browsers?

ContentEditable Div의 커서 위치에 HTML 삽입

문제 설명

해결책

IE 이외의 브라우저에 HTML을 직접 삽입하려면 Range 개체의 insertNode() 메서드를 활용하세요.

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();
            var el = document.createElement("div");
            el.innerHTML = html;
            var frag = document.createDocumentFragment(), node;
            while (node = el.firstChild) {
                frag.appendChild(node);
            }
            range.insertNode(frag);
            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);
    }
}
로그인 후 복사

붙여넣은 콘텐츠 선택 옵션이 포함된 업데이트된 솔루션

선택적으로 추가 매개변수를 사용하여 삽입된 콘텐츠를 선택할 수 있습니다.

function pasteHtmlAtCaret(html, selectPastedContent) {
    // ... Original code ...
    var firstNode = frag.firstChild;
    range.insertNode(frag);
    if (lastNode) {
        range = range.cloneRange();
        range.setStartAfter(lastNode);
        if (selectPastedContent) {
            range.setStartBefore(firstNode);
        } else {
            range.collapse(true);
        }
        sel.removeAllRanges();
        sel.addRange(range);
    }
    // ... Original code ...
}
로그인 후 복사

이 코드는 원하는 경우 삽입된 콘텐츠를 선택할 수 있는 유연성을 추가하여 커서 위치에 HTML을 삽입하기 위한 브라우저 간 호환성을 제공합니다.

위 내용은 모든 브라우저에서 ContentEditable Div의 커서 위치에 HTML을 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿