【发布时间】:2017-05-24 00:18:23
【问题描述】:
我一直在查看一些关于如何保存内联内容的 other questions。由此,我读到以下所有内容都应该可以检测焦点/模糊变化:
CKEDITOR.on("blur", function(e) {
console.log("The editor named " + e.editor.name + " BLUR")
})
CKEDITOR.on("focus", function(e) {
console.log("The editor named " + e.editor.name + " FOCUS")
})
CKEDITOR.on("instanceReady", function(evt) {
var editor = evt.editor
console.log("The editor named " + editor.name + " is now ready")
editor.on("focus", function(e) {
console.log("The editor named " + e.editor.name + " is now focused")
})
editor.on("blur", function(e) {
console.log("The editor named " + e.editor.name + " is now focused")
})
})
我在将 DIV 元素添加到页面之前调用这些函数。 (虽然为了更好的衡量,我也尝试在将 DIV 元素添加到页面之后调用这些 ,但行为没有任何变化。)我已将 DIV 元素全部设置为contenteditable=true。当我点击其中任何一个时,我在点击的点上会看到一个闪烁的光标,我可以编辑 DIV 的内容。当我点击其他地方时,光标消失,表示焦点已丢失。
但是,我的上述函数都没有被调用。我应该如何检测其中一个内联编辑器何时获得和失去焦点?
我查看了API,实际上并没有看到on 是全局CKEDITOR 单例的方法,所以我不确定这应该如何工作。不过方法肯定是有的。
更新:我尝试使用不同的 ckeditor(https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.7/ckeditor.js,而不是我为我的网站构建和下载的版本)并且 该版本 可以工作但仅适用于 instanceReady 事件时间>。我使用与我的网站上相同的版本number,但我确定我没有使用所有相同的插件构建,因此我怀疑必须有插件有问题。
我还注意到,即使我的 div 上有 contenteditable=true,当我选择它并且它变为活动状态时,该元素实际上并没有改变任何东西,也就是说,CKEDITOR 似乎没有用任何东西来替换它进行编辑。这可以解释为什么模糊和焦点事件没有触发,但为什么 CKEDITOR 没有控制?
【问题讨论】:
标签: javascript ckeditor editor