首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Webkit下失去焦点后,强制contenteditable div停止接受输入

问在Webkit下失去焦点后,强制contenteditable div停止接受输入
EN

Stack Overflow用户
提问于 2012-09-10 21:59:24
回答 2查看 3.4K关注 0票数 8

在Chrome和Safari (可能还有其他基于Webkit的浏览器)中,仍然可以输入内容可编辑的div,即使div失去了焦点。

我构建了一个简单的示例来说明这个问题:http://jsfiddle.net/yfcsU/3/

该示例有两个元素:一个带有contenteditable="true"的div和一个单击时将在contenteditable div上触发模糊事件的链接。

单击链接时,可编辑的div失去焦点,但您仍然可以在div中键入内容,任何按键操作都会使其重新获得焦点。

这种行为在Firefox中是不同的,在Firefox中它可以按预期工作:单击链接将导致可内容编辑的div停止接受输入。

在Webkit中,有没有办法强制contenteditable div在失去焦点后停止接受输入,而不禁用div上的contenteditable?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-12 23:01:49

被标记为正确的答案实际上是正确的,但我会添加另一个可能更简单的解决方案。在对blur div调用blur()之后,您必须调用以下代码:

代码语言:javascript
复制
window.getSelection().removeAllRanges();

在这里测试:http://jsfiddle.net/mareksuscak/oytdoxy8/

在我看来,它做了同样的工作,也解释了为什么它不能正确工作-通常选择范围在模糊时从输入元素中删除,但不知何故不会对contentEditable div执行,因此在输入任何字符/libe换行符之后,它会再次被聚焦。

票数 10
EN

Stack Overflow用户

发布于 2012-09-12 15:47:37

在与此斗争了一段时间后,我终于找到了一种方法来强制一个满足的元素停止接受Webkit上的输入。

解决方案是创建一个临时的可编辑元素,将其添加到DOM中,聚焦它,然后删除它。这将导致页面上的任何其他可内容编辑元素停用自身。

与此等效的jQuery代码为:

代码语言:javascript
复制
$('<div contenteditable="true"></div>').appendTo('body').focus().remove()

我已经更新了原始示例以包含此技术的演示:http://jsfiddle.net/yfcsU/4/

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12353247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档