2015-11-13 70 views
4

我試圖通過使用MutationObserver對象將自定義撤消操作添加到textarea元素。我已經在MDN上看過如何使用這個對象,並且據我所知,我似乎正在正確使用它。但是,沒有任何突變正在註冊 - 我希望在textarea中的文本發生更改時進行觀察。MutationObserver無法觀察文本區域

function initObserver() { 
    var editorObserver = new MutationObserver(function(mutations) { 
     console.log("MUTATION"); 

     mutations.forEach(function(mutation){ 
      console.log(mutation.type); 
     }); 
    }); 

    var editorObserverConfig = { characterData: true }; 

    var editor = document.querySelector("#editor"); 

    editorObserver.observe(editor, editorObserverConfig); 
} 

initObserver(); 

此代碼可能有什麼問題?

回答

3

最簡單的方法是使用oninput事件

var editor = document.querySelector("#editor"); 
editor.oninput = function(e) { 
    // do stuff 
} 
+0

我想這是適合我在做什麼。 – NmdMystery

+0

是否有替代輸入行爲更像文本編輯器會呢? IE,而不是聽每個角色,是否有事件捆綁角色和火災一次? – NmdMystery

+0

_「是否有事件捆綁角色並觸發一次?_嘗試過'onchange'事件?預期結果是什麼? – guest271314

2

要回答你的問題,什麼是錯碼突變觀察員觀察更改DOM。對錶單元素的值更改不會被DOM反映,因此不會觸發突變觀察者。

因此,簡而言之,該代碼沒有任何問題。但是當你將文本輸入到文本區域時,你並沒有改變DOM。