Bagaimanakah Saya Boleh Menentukan Offset Aksara Mula dan Tamat Pilihan Pengguna dalam Elemen HTML Induknya?

Susan Sarandon
Lepaskan: 2024-11-18 02:44:02
asal
345 orang telah melayarinya

How Can I Determine the Start and End Character Offsets of a User Selection Within Its Parent HTML Element?

Menentukan Offset Mula dan Tamat Julat Dalam Bekas Induknya

Masalah

Memandangkan elemen HTML, bagaimana seseorang boleh menentukan offset aksara dalam bekas induk di mana julat (pemilihan pengguna) bermula dan berakhir, walaupun semasa pemilihan merangkumi HTML tag?

Penyelesaian

Respons Dikemas Kini:

Untuk mendapatkan kedua-dua offset permulaan dan akhir:

function getSelectionCharacterOffsetWithin(element) {
  // Determine start and end offsets
  var start = 0;
  var end = 0;
  // Create ranges
  var range = getRangeAt(0);
  var preCaretRange = range.cloneRange();

  // Set start offset
  preCaretRange.selectNodeContents(element);
  preCaretRange.setEnd(range.startContainer, range.startOffset);
  start = preCaretRange.toString().length;

  // Set end offset
  preCaretRange.setEnd(range.endContainer, range.endOffset);
  end = preCaretRange.toString().length;

  // Return the object
  return { start: start, end: end };
}
Salin selepas log masuk

Respons Asal:

Kod yang disediakan menggunakan getSelection() dan getRangeAt(0) untuk mendapatkan semula pemilihan. Ia kemudian mengira offset kedudukan karet dalam elemen menggunakan kaedah toString() pada julat. Pendekatan ini hanya menyediakan kedudukan offset atau karet hujung.

Contoh:

function getRangeCharacterOffsetWithin(element) {
  var range, sel;
  if ((sel = window.getSelection())) {
    range = sel.getRangeAt(0);
    range.collapse(false);
    prevRange = range.cloneRange();
    prevRange.selectNodeContents(element);
    prevRange.setEnd(range.endContainer, range.endOffset);
    return prevRange.toString().length;
  }
  return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Offset Aksara Mula dan Tamat Pilihan Pengguna dalam Elemen HTML Induknya?. 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