Bagaimana untuk Menghalang Kursor daripada Menetapkan Semula kepada Permulaan Kandungan Boleh Diedit ``?

Barbara Streisand
Lepaskan: 2024-11-10 16:07:02
asal
1025 orang telah melayarinya

How to Prevent the Cursor from Resetting to the Beginning of a ContentEditable ``?

Tetapkan Kedudukan Kursor pada ContentEditable

Apabila bekerja dengan contentEditable='on'

, adalah perkara biasa untuk menghadapi isu kursor menetapkan semula ke permulaan teks selepas mendapat semula fokus. Untuk menangani perkara ini, penyelesaian silang penyemak imbas telah muncul.

Penyelesaian:

1. Simpan Kedudukan Kursor:

function saveSelection() {
  if (window.getSelection) { // non-IE
    savedRange = window.getSelection().getRangeAt(0);
  } else if (document.selection) { // IE
    savedRange = document.selection.createRange();
  }
}
Salin selepas log masuk

Fungsi ini melekat pada acara onmouseup dan onkeyup bagi

dan menyimpan pilihan semasa ke pembolehubah savedRange.

2. Pulihkan Kedudukan Kursor:

function restoreSelection() {
  if (savedRange != null) {
    if (window.getSelection) { // non-IE
      var s = window.getSelection();
      s.removeAllRanges();
      s.addRange(savedRange);
    } else if (document.createRange) { // non-IE
      window.getSelection().addRange(savedRange);
    } else if (document.selection) { // IE
      savedRange.select();
    }
  }
}
Salin selepas log masuk

Fungsi ini melekat pada acara onfocus

dan memulihkan pilihan yang disimpan dalam savedRange.

3. Cegah Peristiwa Klik (Pilihan):

Jika anda mahu kursor dipulihkan pada klik dan bukannya menetapkan semula kepada permulaan, anda boleh menggunakan fungsi berikut:

var isInFocus = false;

function onDivBlur() {
  isInFocus = false;
}

function cancelEvent(e) {
  if (isInFocus == false && savedRange != null) {
    e.stopPropagation();
    e.preventDefault();
    restoreSelection();
    return false;
  }
}
Salin selepas log masuk

Ini fungsi dilampirkan pada acara onblur, onclick, dan onmousedown dan menghalang acara klik daripada menetapkan semula kedudukan kursor. Mereka juga memulihkan pemilihan, memastikan kursor diletakkan di tempat ia berhenti.

Atas ialah kandungan terperinci Bagaimana untuk Menghalang Kursor daripada Menetapkan Semula kepada Permulaan Kandungan Boleh Diedit ``?. 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