就像this other question,我希望能够在用户更改contenteditable DIV的内容时调用函数。不过,我想支持IE 7-10。 IE 7和8 do not support“输入”事件。标准模式和IE 10中的IE 9支持“输入”,但无法触发“输入”事件以响应剪切,粘贴,删除(从上下文菜单中)或文本删除操作。另外,当用户从上下文菜单中选择建议的拼写时,Windows 8上的IE 10不会响应拼写校正更改而触发“输入”事件。IE 7和8中的contenteditable变更事件
见http://fiddle.jshell.net/2ScfA/show/
在Internet Explorer的所有版本中,我看到一个使用剪切和粘贴上下文菜单选项时,“剪切”和“粘贴”事件。
在IE 9标准模式和IE 10中,我可以使用DOMNodeRemoved和DOMNodeInserted来处理将文本放入contenteditable DIV或使用上下文菜单更改DIV内容所导致的更改。
但是,IE 7和8不支持DOM突变事件。如果我使用IE 7或8的“删除”或“撤消”上下文菜单选项或将文本放入DIV,我没有看到针对这些更改触发的事件。
当用户从上下文菜单中选择“删除”或“撤消”,或者将文本放入DIV中,并且可满足的DIV内容被更改时,是否存在在IE 7和8中触发的事件?
您可以在较老的IE中使用['onselectionchange'](http://msdn.microsoft.com/zh-cn/library/ie/ms536968%28v=vs.85%29.aspx)。 – Teemu
你可以看看谷歌封闭库:http://docs.closure-library.googlecode.com/git/index.html当你下载库并解压缩它时,你会在goog/demos/editor/editor.html如果这个行为表现的方式,你想它的行为,那么你可以看看他们如何实现它。在updateFieldContents中设置一个断点并检查堆栈。我怀疑他们使用setInterval。 HTML 5内容项目可编辑有许多许多怪癖,所以我希望你好运 – HMR
感兴趣的代码似乎在goog/editor/Field.js中的goog.editor.Field.prototype.setupChangeListeners_' http://docs.closure -library.googlecode.com/git/closure_goog_editor_field.js.source.html#line777 – HMR