Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Meletakkan Karet pada Penghujung Teks dalam Elemen Boleh Diedit Merentasi Pelayar?

Bagaimana untuk Meletakkan Karet pada Penghujung Teks dalam Elemen Boleh Diedit Merentasi Pelayar?

Barbara Streisand
Lepaskan: 2024-11-19 14:26:02
asal
260 orang telah melayarinya

How to Place the Caret at the End of Text in a Contenteditable Element Across Browsers?

Menetapkan Kedudukan Karet pada Pelayar Silang Akhir Teks

Pengenalan

Memasukkan baris baharu dan menetapkan kedudukan karet pada penghujung teks boleh berbeza-beza merentas penyemak imbas . Artikel ini meneroka penyelesaian silang penyemak imbas untuk menetapkan karet pada hujung teks apabila butang diklik.

Masalah

Dalam pelbagai penyemak imbas seperti Chrome, Firefox dan IE, cara teks disimpan dan dipaparkan dalam elemen boleh diedit kandungan berbeza. Ini boleh mengakibatkan pemisah baris atau pemformatan yang tidak diingini.

Selain itu, menetapkan kedudukan karet pada penghujung teks selepas butang klik memerlukan pendekatan yang konsisten merentas penyemak imbas.

Penyelesaian

Fungsi JavaScript berikut menyediakan penyelesaian silang penyemak imbas untuk meletakkan karet di hujung teks:

function placeCaretAtEnd(el) {
  el.focus();
  if (typeof window.getSelection != "undefined"
      && typeof document.createRange != "undefined") {
    var range = document.createRange();
    range.selectNodeContents(el);
    range.collapse(false);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
  } else if (typeof document.body.createTextRange != "undefined") {
    var textRange = document.body.createTextRange();
    textRange.moveToElementText(el);
    textRange.collapse(false);
    textRange.select();
  }
}
Salin selepas log masuk

Fungsi ini merujuk kepada elemen boleh diedit kandungan (el) sebagai input. Ia menyemak kaedah getSelection dan createRange yang terdapat dalam pelayar moden. Jika tersedia, ia mencipta julat, memilih keseluruhan kandungan elemen, meruntuhkan julat hingga akhir dan menetapkan pemilihan.

Untuk penyemak imbas lama yang kekurangan kaedah ini, fungsi menggunakan kaedah createTextRange untuk mencapai kesan yang sama.

Untuk menggunakan fungsi ini, ia harus dipanggil apabila butang diklik, seperti ini:

$(document).ready(function() {
  $('#insert_caret').click(function() {
    var ele = $('#content');
    placeCaretAtEnd(ele);
  });
});
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Meletakkan Karet pada Penghujung Teks dalam Elemen Boleh Diedit Merentasi 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