【问题标题】:contentEditable + selectAll: Firefox won't allow keyboard input on dynamically generated contentcontentEditable + selectAll:Firefox 不允许在动态生成的内容上进行键盘输入
【发布时间】:2011-09-17 19:41:47
【问题描述】:

我在 Firefox 中遇到问题(其他浏览器似乎工作正常),动态生成的元素包含 contenteditable="true" 属性:

如果我selectAll(动态或使用鼠标),Firefox 将不允许键盘输入。

请参阅我的jsFiddle Example 以供参考。这似乎只影响 Firefox。

$(document).ready(function(){
$('.edit').live('dblclick', function () {
    document.execCommand('selectAll',false,null);
});

$('#live').append('<p class="edit" contenteditable="true">This content is generated. Firefox will not allow keyboard input when "ALL" is selected.</p>');
});

编辑: 这是我正在开发的实际应用程序(请原谅灰尘):cr8.me/app/ff.html - 我想要的是单击(双击以选择所有文本)注释、类别或计划标题来编辑它。它对任何人都有效吗?也许这只是我的配置 - 或者糟糕的脚本。第 137、572 行是相关的。

【问题讨论】:

  • 在 Firefox 3.6 中对我来说很好用。您使用哪个版本? 6.0?
  • 嗯,提供更多详细信息然后(操作系统):) 我已经检查了 Fx 3.6.22(Win XP)和 6.0.2(虚拟机上的 Win 7)并且都可以正常工作。
  • Mac OS 10.7.1 上的 6.0.2 - 但现在我注意到它在我的示例中间歇性地工作 - 但在我的应用程序中没有。
  • 这是我正在开发的实际应用程序(请原谅灰尘):cr8.me/app/ff.html - 我想要的是单击(双击以选择所有文本)注释、类别、或计划标题进行编辑。它对任何人都有效吗?也许这只是我的配置 - 或者糟糕的脚本。第 137、572 行是相关的。
  • 哈,该应用程序不工作(Fx 3.6 / XP),虽然小提琴仍然可以。

标签: javascript jquery firefox contenteditable selectall


【解决方案1】:

显然 Firefox 在 span 元素上存在 contenteditable 问题(我假设其他 display: inline 元素也是如此,尽管我没有测试过)。 只需用 div 替换 span 即可解决问题。更重要的是 - div 可以使用 css 在它们上设置“显示:内联”属性并且仍然可以正常工作。

在此处查看工作示例:http://jsfiddle.net/6sTJh/5/。 带有标签“Add buggy”的按钮动态添加了一个带有 contenteditable 的跨度,但它没有按预期工作,而“Add working”按钮附加了带有 contenteditable 属性的 div,它工作得很好。

您的应用也是如此 - 当我用 div 替换所有 contenteditable 跨度时,编辑在 firefox 3.6 和 firefox 6.0 中运行良好。

旁注: 至于您的应用程序代码 - 不要在多个节点上使用相同的 id (就像您在每个笔记上使用相同的 id "note-title"),否则您可能会从各种浏览器。

一般规则是在一页上只能有一个具有给定 id 的元素。使用 class 将多个元素“分组”并稍后选择它们。

【讨论】:

  • +1,很好的答案。我之前在 contentEditable 上遇到过问题,这与我的问题类似。
猜你喜欢
  • 2014-01-20
  • 2013-09-28
  • 2013-06-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
相关资源
最近更新 更多