Javascript 代码镜像批处理更改

Javascript 代码镜像批处理更改,javascript,codemirror,Javascript,Codemirror,有没有一种方法可以批量更改codemirror API? 例如,我使用changesAPI捕获更改事件,但如果用户按下键盘上的一个字母,他/她将在更改数组中获得多个条目。是否有一个事件会缓冲这些更改,并且仅使用数组中的一个对象调用 Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+delete" } editor.jsp:71:3 Object { from: Object, to: O

有没有一种方法可以批量更改codemirror API? 例如,我使用
changes
API捕获更改事件,但如果用户按下键盘上的一个字母,他/她将在更改数组中获得多个条目。是否有一个事件会缓冲这些更改,并且仅使用数组中的一个对象调用

Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+delete" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" } editor.jsp:71:3
Object { from: Object, to: Object, text: Array[1], removed: Array[1], origin: "+input" 

change
事件总是在用户更改
codemrror
之后发生。但是,这些事件被缓冲为
history
-对象,您可以使用
doc.getHistory()
doc.setHistory()
方法访问、修改和重用这些对象:

var cm = CodeMirror.fromTextArea(document.getElementById('codesnippet_editable'), {
        mode: "javascript",
        theme: "default",
        lineNumbers: true,
        pollInterval: 100
});
    
document.getElementById("foo").addEventListener("click", function () {
    console.log(cm.getDoc().getHistory());  
    //check console for done and undone objects
});
HTML:

单击我后查看控制台
//在这里写一些代码
小提琴:

您可以使用
pollInterval
更改生成历史对象的频率

轮询间隔:编号

指示CodeMirror应以多快的速度轮询其输入文本区域以获取更改(聚焦时)。大多数输入是由事件捕获的,但有些东西,如某些浏览器上的IME输入,无法生成允许CodeMirror正确检测的事件。因此,它进行民意测验。默认值为100毫秒


这适用于用户按下键的情况:尽管按下键的时间比轮询间隔长,但只创建了一个对象。

我也在寻找解决方案。这很好,正是我所需要的。非常感谢。
<button id="foo">See console after clicking me</button>
    
<textarea rows="4" cols="50" name="codesnippet_editable" id="codesnippet_editable">
// Write some code here
</textarea>