Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menetapkan dan Mengekalkan Kedudukan Kursor dalam Div Boleh Diedit Kandungan?

Bagaimana untuk Menetapkan dan Mengekalkan Kedudukan Kursor dalam Div Boleh Diedit Kandungan?

Linda Hamilton
Lepaskan: 2024-11-15 03:21:02
asal
747 orang telah melayarinya

How to Set and Maintain Cursor Position in a ContentEditable Div?

Tetapkan Kedudukan Kursor pada contentEditable <div>

Apabila berurusan dengan contentEditable <div>, fungsi penyemak imbas lalai menetapkan semula kedudukan kursor ke permulaan teks apabila kembali fokus. Untuk menyelesaikan masalah ini, pertimbangkan penyelesaian berikut:

Simpan dan Pulihkan Kedudukan Kursor:

  1. Simpan Kedudukan Semasa: Dalam onmouseup dan acara onkeyup, simpan kedudukan kursor semasa dalam pembolehubah, savedRange.
  2. Kedudukan Pulihkan: Dalam acara onfocus, pulihkan pilihan yang disimpan daripada savedRange.

Pendekatan ini memastikan kursor diletakkan pada lokasi terakhir yang diketahui apabila div kembali fokus.

Pengendalian Klik:

Untuk memulihkan pilihan apabila mengklik div, langkah tambahan berikut diperlukan:

  1. Batalkan Acara Klik: Lampirkan cancelEvent() kepada acara onclick dan onmousedown. Fungsi ini menghalang gelagat lalai acara ini dan memanggil restoreSelection().
  2. Keadaan Fokus Jejak: Gunakan pembolehubah isInFocus untuk menentukan sama ada div berada dalam fokus. Hanya batalkan acara klik apabila div tidak berada dalam fokus.

Kod Kerja:

<div>
Salin selepas log masuk
var savedRange, isInFocus;

function saveSelection() {
  savedRange = window.getSelection ? window.getSelection().getRangeAt(0) : document.selection.createRange();
}

function restoreSelection() {
  isInFocus = true;
  document.getElementById("area").focus();

  if (savedRange) {
    if (window.getSelection) {
      var s = window.getSelection();
      s.removeAllRanges();
      s.addRange(savedRange);
    } else if (document.createRange) {
      window.getSelection().addRange(savedRange);
    } else if (document.selection) {
      savedRange.select();
    }
  }
}

function onDivBlur() {
  isInFocus = false;
}

function cancelEvent(e) {
  if (isInFocus === false && savedRange) {
    if (e && e.preventDefault) {
      e.stopPropagation();
      e.preventDefault();
    } else {
      window.event.cancelBubble = true;
    }
    restoreSelection();
    return false;
  }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan dan Mengekalkan Kedudukan Kursor dalam Div Boleh Diedit Kandungan?. 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