InputEvent: getTargetRanges() 方法

Baseline 已廣泛支援

此特性已得到良好建立,並適用於許多裝置和瀏覽器版本。自 ⁨2021 年 3 月⁩ 以來,所有瀏覽器都已支援此特性。

getTargetRanges() 方法是 InputEvent 介面的一部分,它返回一個 StaticRange 物件陣列,這些物件將在 DOM 發生更改時受到影響(如果輸入事件未被取消)。

這允許 Web 應用在瀏覽器修改 DOM 樹之前覆蓋文字編輯行為,並提供對輸入事件的更多控制以提高效能。

根據 inputType 的值和當前的編輯主機,該方法的預期返回值會有所不同。

inputType 編輯主機 getTargetRanges() 的響應
"historyUndo""historyRedo" 任意 空陣列
所有剩餘的 contenteditable 與事件關聯的 StaticRange 物件陣列
所有剩餘的 inputtextarea 空陣列

語法

js
getTargetRanges()

引數

無。

返回值

StaticRange 物件陣列。

示例

特性檢測

以下函式在支援 beforeinput(從而支援 getTargetRanges)時返回 true。

js
function isBeforeInputEventAvailable() {
  return (
    window.InputEvent &&
    typeof InputEvent.prototype.getTargetRanges === "function"
  );
}

基本用法

以下示例選擇一個 contenteditable 元素,並利用 beforeinput 事件來記錄 getTargetRanges() 的結果。

js
const editableElem = document.querySelector('[contenteditable="true"]');

editableElem.addEventListener("beforeinput", (e) => {
  const targetRanges = e.getTargetRanges();
  console.log(targetRanges);
});

規範

規範
Input Events Level 2
# dom-inputevent-gettargetranges

瀏覽器相容性