首頁 >web前端 >js教程 >如何在焦點後保持遊標位置在內容可編輯 Div 中?

如何在焦點後保持遊標位置在內容可編輯 Div 中?

DDD
DDD原創
2024-11-10 00:37:02533瀏覽

How to Keep the Cursor Position in a Content Editable Div After Focus?

在ContentEditable <div> 上設定遊標位置

問題:

Content editable

<div>每次重新獲得焦點時,元素往往會將遊標位置重設到文字的開頭。當遊標需要恢復到先前的位置時,這可能是不可取的。

解決方案:

要解決此問題,可以採用以下跨瀏覽器解決方案:

第1 步:儲存選擇

將事件偵聽器(onmouseup 和onkeyup)附加到

<div>釋放滑鼠按鈕或釋放某個按鍵時擷取目前遊標位置(savedRange)。

步驟2:恢復選擇

步驟2 ( a): On Focus

將事件監聽器(onfocus)附加到

<div>;恢復之前儲存的選擇。

步驟2 (b):點擊時(可選)

要在點擊時保留選擇,需要執行其他步驟:

  • 註冊onclick 和onmousedown 事件監聽器,取消點擊事件(cancelEvent())。
  • 在 cancelEvent() 內,恢復已儲存的選擇並將 isInFocus 設為 true。
  • 在模糊(onblur)時,將 isInFocus 設為 false。

完整程式碼(包含點擊時的選取還原):

<div>
var savedRange, isInFocus;

function saveSelection() {
  // ... (Selection saving logic as described in Step 1)
}

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

  if (savedRange != null) {
    // ... (Selection restoration logic as described in Step 2)
  }
}

function onDivBlur() {
  isInFocus = false;
}

function cancelEvent(e) {
  if (isInFocus === false && savedRange != null) {
    // ... (Event cancellation logic as described in Step 2 (b))
  }
}

以上是如何在焦點後保持遊標位置在內容可編輯 Div 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

register Event this position issue
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:如何在不切換焦點的情況下在背景開啟新分頁?下一篇:如何在不切換焦點的情況下在背景開啟新分頁?

相關文章

看更多