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

Linda Hamilton
Lepaskan: 2024-11-17 11:52:01
asal
370 orang telah melayarinya

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);
    }
}
Salin selepas log masuk

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 ...
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan