1. 程式人生 > 其它 >模擬按鍵'ESC',解決韓語等輸入法對輸入框(codemirror)的支援

模擬按鍵'ESC',解決韓語等輸入法對輸入框(codemirror)的支援

示例:

  on(div, "compositionend", function (e) {
      if (this$1.composing) {
          if (e.data != this$1.composing.data) { this$1.readFromDOMSoon() }
          this$1.composing.done = true
          //simulate 'ESC',  ex.Korean
          var keyboardEventInit = { key: "Escape", code: "Escape", keyCode: 27, which: 27, composed: true, bubbles:true };
              var evtObj = new KeyboardEvent('keydown', keyboardEventInit);
              e.target.dispatchEvent(evtObj);
      }
  })

輸入法事件 CompositionEvent

DOM 介面 CompositionEvent 表示使用者間接輸入文字(如使用輸入法)時發生的事件。此介面的常用事件有compositionstart, compositionupdatecompositionend

KeyboardEvent

KeyboardEvent 物件描述了使用者與鍵盤的互動。 每個事件都描述了使用者與一個按鍵(或一個按鍵和修飾鍵的組合)的單個互動;事件型別keydownkeypresskeyup 用於識別不同的鍵盤活動型別。

注意:KeyboardEvent 只在低級別提示使用者與一個鍵盤按鍵的互動是什麼,不涉及這個互動的上下文含義。 當你需要處理文字輸入的時候,使用

input (en-US) 事件代替。使用者使用其他方式輸入文字時,如使用平板電腦的手寫系統或繪圖板, 鍵盤事件可能不會觸發。

EventTarget.dispatchEvent

向一個指定的事件目標派發一個事件, 並以合適的順序同步呼叫目標元素相關的事件處理函式。標準事件處理規則(包括事件捕獲和可選的冒泡過程)同樣適用於通過手動的使用dispatchEvent()方法派發的事件。

語法

cancelled = !target.dispatchEvent(event)

引數

  • event 是要被派發的事件物件。
  • target 被用來初始化 事件 和 決定將會觸發 目標.

返回值

  • 當該事件是可取消的(cancelable為true)並且至少一個該事件的 事件處理方法 呼叫了
    Event.preventDefault()
    ,則返回值為false;否則返回true