2011-04-12 68 views
15

我在CKEditor 3.4.1的instanceReady事件中設置焦點時遇到問題。我已經嘗試了以下兩種方式,但他們都不是一直工作。CKReitor .focus()在instanceReady事件不起作用

CKEDITOR.on('instanceReady', function(e) { CKEDITOR.instances.editor1.focus(); }); 


CKEDITOR.replace('editor1', 
{ 
    on : 
    { 
     instanceReady : function(ev) 
     { 
      ev.editor.focus(); 
     } 
    } 
}); 
+2

爲什麼給定的解決方案,爲你沒有工作的任何更新? – Nenotlep 2013-03-05 13:08:18

回答

11

在這裏你去我的朋友

CKEDITOR.replace('editor1', 
{ 
    on : 
    { 
     instanceReady : function(ev) 
     { 
      CKEDITOR.instances.editor1.focus(); 
     } 
    } 
}); 

CKEDITOR.replace('editor1', 
{ 
    on : 
    { 
     instanceReady : function(ev) 
     { 
      this.focus(); 
     } 
    } 
}); 
+0

..它仍然是一樣的。有時它正在工作,有時不是......你有什麼想法嗎?謝謝 – 2011-04-14 16:53:46

+0

我可以看到周圍的代碼嗎?你有沒有得到任何的錯誤? – mcgrailm 2011-04-14 19:58:00

17

也許試試這個,這是非常簡單的:

使用startupFocus : true

因此您的代碼應該lo確定這樣的:

CKEDITOR.replace('editor1', 
{ 
    startupFocus : true, 
... 
+1

你也許知道,如何保留插入符號的位置(用戶在div中點擊[contentEditable]。你的代碼有效(它提供了焦點,激發了instanceCreated事件),但插入符總是被放置在cke div的文本開頭,如果你點擊文本的末尾部分 – 2016-04-11 13:37:13

4
CKEDITOR.instances['instance-name'].on('instanceReady', function (event) { 
      CKEDITOR.instances['instance-name'].focus(); 
     }); 
+0

謝謝texian,這對我有用 – philippinedev 2014-08-15 10:49:01

1

骯髒的方式(請務必閱讀我的回答下方留言):但

jQuery('.cke_wysiwyg_frame').contents().find('body').focus(); 
+0

通過jquery添加焦點將完全繞過cke焦點更改和事件觸發完成後,必須使用cke焦點管理器。 – 2016-04-11 13:45:38

0

有點晚:

CKEDITOR.replace('YourEditor', 
{ 
on: 
    { 
    instanceReady : function(evt) 
    { 
     //Set the focus to your editor 
     CKEDITOR.instances.YourEditor.focus(); 
     } 
    } 
} 

工作正常我。 找到here

1

最好的辦法我,

  1. 找到CKEditor的實例,然後
  2. 觸發焦點事件

    關鍵的一點是在超時集中實例

    for(var instance in CKEDITOR.instances){
    $ timeout(function(){ CKEDITOR.instances [instance] .focus(); }); }

注意:我發現帶for循環的實例。您可能會找到更好的方法來找到實例

0

以上答案都不適合我。以下是我爲CHROME和它工作得很好:

CKEDITOR.instances['instance-name'].container.focus();