Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Memasukkan HTML pada Kedudukan Kursor dalam Div Boleh Diedit Kandungan dalam Semua Pelayar?

Bagaimana untuk Memasukkan HTML pada Kedudukan Kursor dalam Div Boleh Diedit Kandungan dalam Semua Pelayar?

Linda Hamilton
Linda Hamiltonasal
2024-11-17 11:52:01372semak imbas

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

Memasukkan HTML pada Kedudukan Kursor dalam Div Boleh Diedit Kandungan

Pernyataan Masalah

Memasukkan HTML, seperti

Penyelesaian

Untuk memasukkan HTML terus ke dalam penyemak imbas selain daripada IE, gunakan kaedah insertNode() bagi objek Julat:

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);
    }
}

Penyelesaian Kemas Kini dengan Pilihan untuk Memilih Kandungan Tampal

Secara pilihan, anda boleh memilih kandungan yang dimasukkan menggunakan parameter tambahan:

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 ...
}

Kod ini menyediakan keserasian merentas penyemak imbas untuk memasukkan HTML pada kedudukan kursor, dengan fleksibiliti tambahan untuk memilih kandungan yang dimasukkan jika dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan HTML pada Kedudukan Kursor dalam Div Boleh Diedit Kandungan dalam Semua Pelayar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn