Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Don';单击其他元素时不要失去焦点_Jquery_Focus_Contenteditable - Fatal编程技术网

Jquery Don';单击其他元素时不要失去焦点

Jquery Don';单击其他元素时不要失去焦点,jquery,focus,contenteditable,Jquery,Focus,Contenteditable,我正在为一个项目编写一个小型“就地编辑器”,但在保持焦点和模糊方面遇到了两个问题。我用小提琴更好地解释了我的问题: (1) 当您在contenteditable元素中单击时,会出现一个小工具栏。单击工具栏时,当前正在编辑的元素会在短时间内失去焦点。有没有办法避免这种情况?(这实际上是一个用户体验问题) (2) 当模糊时,工具栏应消失。但这会导致工具栏无法工作。如果单击工具栏上的某个内容,将发生blur事件。。。当用户单击工具栏时,不模糊的最佳实践是什么 提前感谢, 塞巴斯蒂安解决方案非常简单。

我正在为一个项目编写一个小型“就地编辑器”,但在保持焦点和模糊方面遇到了两个问题。我用小提琴更好地解释了我的问题:

(1) 当您在
contenteditable
元素中单击时,会出现一个小工具栏。单击工具栏时,当前正在编辑的元素会在短时间内失去焦点。有没有办法避免这种情况?(这实际上是一个用户体验问题)

(2) 当
模糊时,工具栏应消失。但这会导致工具栏无法工作。如果单击工具栏上的某个内容,将发生
blur
事件。。。当用户单击工具栏时,不模糊的最佳实践是什么

提前感谢,


塞巴斯蒂安

解决方案非常简单。。。只需添加一个超时“保护菜单”。更新了小提琴

    protect: function (e) {
        e.preventDefault()
        return setTimeout(300)
    }   

你遇到了一个很深的问题:)一个Maanay在去体面的wysiwyg编辑器的路上

在CKEditor中,我们通过以下方式解决了此问题:

  • -首先,我们注册作为编辑器UI一部分的元素。第二,我们听关于这些元素的模糊/聚焦事件。第三,我们在模糊事件之后等待一段时间,因为焦点可能会在模糊事件之后触发。第四,我们触发自定义的fire/blur事件(在编辑器实例上,而不是在DOM元素上),工具栏之类的东西会在这些事件上侦听

  • 第二部分,我相信我们在CKEditor 4 beta版中跳过了,就是将选择标记保留在可编辑的文本中。这是因为在大多数浏览器中,即使在单击工具栏后,选择(甚至在视觉上)仍保持在可编辑状态。也许这是因为我们使用了一些特殊的attributes/JS代码来阻止将选择移动到那里——不幸的是,我不知道

  • 最后一件事是在“可编辑”中锁定选择。当你将焦点移到工具栏时,它不应该丢失,我相信IE和Opera在这里失败了。因此,我们在
    CKEDITOR.dom.selection
    中有一些特殊的方法来锁定和恢复选择。监听器在可编辑窗口的
    focus/blur
    上使用它们


  • 您能否详细说明事件处理程序中的超时用法?感谢这是一个难以置信的解决方案^^我在我的代码库中寻找了2天,但无法解决此问题,这就像一个charme!!!