【问题标题】:CKEditor .focus() in instanceReady event is not workinginstanceReady 事件中的 CKEditor .focus() 不起作用
【发布时间】:2011-08-04 04:07:21
【问题描述】:

我在 CKEditor 3.4.1 的 instanceReady 事件中设置焦点时遇到问题。我已经尝试了以下两种方法,但它们并不总是有效。

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


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

【问题讨论】:

  • 关于为什么给定的解决方案不适合您的任何更新?

标签: javascript jquery ckeditor


【解决方案1】:

或者试试这个,这更简单:

使用startupFocus : true

所以你的代码应该是这样的:

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

【讨论】:

  • 您是否知道,如何保留插入符号位置(用户在 div[contentEditable] 内单击的位置。您的代码有效(它提供焦点,触发 instanceCreated 事件),但插入符号始终位于开头cke div 中的文本,不管你是否点击了 div 中文本的末尾。
【解决方案2】:

朋友来了

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

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

【讨论】:

  • .. 还是一样。有时它工作,有时它不是......你知道吗?谢谢
【解决方案3】:
CKEDITOR.instances['instance-name'].on('instanceReady', function (event) {
            CKEDITOR.instances['instance-name'].focus();
        });

【讨论】:

    【解决方案4】:

    有点晚了,但是:

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

    对我来说很好。 找到here

    【讨论】:

      【解决方案5】:

      对我来说最好的方式,

      1. 找到CKEditor实例,然后
      2. 触发焦点事件

        关键是要在超时时聚焦实例

        for(CKEDITOR.instances 中的 var 实例){
        $超时(函数(){ CKEDITOR.instances[instance].focus(); }); }

      注意:我找到了带有 for 循环的实例。您可能会找到更好的方法来查找实例

      【讨论】:

        【解决方案6】:

        以上答案都不适合我。这是我为 CHROME 所做的,效果很好:

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

        【讨论】:

          【解决方案7】:

          肮脏的方式(确保您阅读了我的回答下的评论):

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

          【讨论】:

          • 通过 jquery 添加焦点将完全绕过 cke 焦点更改和完成后触发的事件。您必须使用 cke 焦点管理器。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-03
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 2017-06-21
          相关资源
          最近更新 更多