每當我的腳本調用setData或更改模式(「源」,「所見即所得」)時,不再調用我分配的事件的監聽器。使用CKEditor在setData和模式更改時重置監聽器事件
研究告訴我爲什麼,我一直在建議的解決方案(CKEDITOR.setData prevents attaching of events with .on function),包括來自官方文檔(http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDom)的實驗,但沒有決議爲我工作的記錄,我不知道爲什麼。
這裏有其他人設法解決這個問題嗎?如果是這樣,我將非常感謝,以瞭解如何。
我們是CKEditor當前運行的版本4.5.10。
感謝您的期待。 Ken。
例子:
// Works until setData() is called or until the view mode is changed ("WYSIWYG", "SOURCE).
ev.editor.document.on('keydown', function(evt)
{
console.log("Key Down");
});
// This appears to be the recommended resolution however, this does not
// work for me even prior to setData() being called of the view mode being changed.
editor.on('contentDom', function() {
var editable = editor.editable();
editable.attachListener(editor.document, 'keydown', function() {
console.log("Key Down"); // Never executed
});
});
UPDATE:該解決方案(由德克爾建議)在我看來,它應該工作。但是,我懷疑我沒有正確實現它,因此按下按鍵事件不會觸發。對此有任何想法:
for (var i in CKEDITOR.instances) {
CKEDITOR.instances[i].on('contentDom', function() {
CKEDITOR.instances[i].document.on('keydown', function(event) {
console.log('key down')
});
});
}
更新:完整的代碼示例。該事件不再發生:
<html>
<textarea name="editor1">
</textarea>
<textarea name="editor2">
</textarea>
<textarea name="editor3">
</textarea>
</html>
<script>
CKEDITOR.replace('editor1', {
allowedContent: true
});
CKEDITOR.replace('editor2', {
allowedContent: true
});
CKEDITOR.replace('editor3', {
allowedContent: true
});
for (var i in CKEDITOR.instances) {
CKEDITOR.instances[i].on('contentDom', function() {
CKEDITOR.instances[i].document.on('keydown', function(event) {
console.log('key down')
});
});
}
</script>
添加一個例子... – Dekel
//工作直到使用setData()被調用,或直到視圖模式被改變( 「所見即所得」,「SOURCE)。 ev.editor.document.on( 'KEYDOWN' ,功能(EVT) { 的console.log( 「鍵按下」); }); //這似乎是推薦分辨率然而,這並不 //工作對我來說,即使之前使用setData()被稱爲正在改變的視圖模式。 editor.on( 'contentDom',函數(){ 變種可編輯= editor.editable(); editable.attachListener(editor.document, 'KEYDOWN',函數(){ 的console.log(「鍵按下「); //永不執行 }); }); –
格式的道歉。我剛來這地方。我將如何着手在示例中獲取換行符? –