Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Memasukkan HTML ke dalam Contenteditable DIV pada Kedudukan Karet?

Bagaimana untuk Memasukkan HTML ke dalam Contenteditable DIV pada Kedudukan Karet?

Mary-Kate Olsen
Lepaskan: 2024-11-10 00:19:02
asal
349 orang telah melayarinya

How to Insert HTML into a Contenteditable DIV at the Caret Position?

Memasukkan HTML ke dalam Contenteditable DIV pada Kedudukan Karet

Cabaran:

Dalam div yang boleh diedit kandungan, peristiwa penekanan kekunci menangkap boleh digunakan untuk menghalang kemasukan teks apabila kekunci Enter ditekan. Dengan kursor dalam titik sisipan yang diingini, kami mencari kaedah untuk memasukkan HTML (cth., teg
) tanpa memaparkannya sebagai teks biasa.

Penyelesaian:

Semasa menggunakan Range.pasteHTML() berfungsi dalam IE, pelayar lain memaparkan teg HTML sebagai teks. Fungsi berikut membolehkan kami memasukkan HTML dalam semua pelayar utama, menggantikan teks sedia ada jika dipilih:

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

Fungsi Dipertingkat (Ogos 2013):

Sebagai tindak balas kepada permintaan pengguna, parameter tambahan telah ditambahkan untuk menentukan sama ada kandungan yang dimasukkan perlu atau tidak dipilih.

function pasteHtmlAtCaret(html, selectPastedContent) {
  // Similar functionality as the original function
  // ...
}
Salin selepas log masuk

Fungsi dikemas kini ini membolehkan kami mengawal gelagat pemilihan selepas memasukkan kandungan HTML.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan HTML ke dalam Contenteditable DIV pada Kedudukan Karet?. 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