【问题标题】:Skipping an element in CKEditor在 CKEditor 中跳过一个元素
【发布时间】:2015-06-09 14:35:06
【问题描述】:

假设我们有以下文本和插入符号位置:

foo |bar baz

HTML 代码是

foo <span>bar</span> baz

并且用户按下了右箭头键。发生的情况是插入符号现在移动到了bar 的字母ba 之间的范围内。

我希望 CKEditor 自动跳过某个元素(例如所有跨度)并跳到它后面,所以结果是:

foo bar| baz

这是否可能仅通过摆弄配置来实现?如果是这样,我需要设置什么?我无法找到文档中提到的这些设置。还是我必须更改 CKEditor 源代码才能执行此类操作?

【问题讨论】:

    标签: javascript ckeditor contenteditable


    【解决方案1】:

    重要的是 CKEditor 不负责插入符号的移动。至少在大多数情况下这是正确的,因为有些事情需要自己掌握。在所有其他情况下,移动插入符号的是您的浏览器,因此您需要更改其行为。这是可行的,它只需要编写一个keydown 侦听器,它将发现何时发生某种情况并在您选择的位置设置选择。然而,这还不是全部,因为用户还可以通过单击或拖动在 <span> 中放置插入符号。所以还有一点(嗯……“一点”)要做。

    另一种解决方案是使用不可编辑的岛,在 CKEditor 中称为小部件。我不确定这是否是您想要实现的目标,但也许 placeholders 是您想要的。

    如果您想了解更多关于一般小部件的信息,请参阅 – Introduction to Widgets

    【讨论】:

    • 嗯,有两个条件。不应编辑元素内的文本,用户也不应将插入符号放置在此类元素内。上面提到的哪个解决了这个问题?能否提供一些示例代码?
    • 你看到我在回答中链接到的demo of placeholders了吗?
    • 我并不是要不感恩,但有了 40k+ 分,您就可以熟悉这里的“仅链接回答”政策。为了以后的观众,请添加相关代码。我准备好接受答案了。
    • 恐怕我们明白"link only answer" 的不同之处。您没有询问如何安装或使用占位符插件。您问了一个概念性问题,如何解决某个问题。因此,我的回答也是概念性的。它提到了两种替代解决方案,但没有详细说明(在第一种情况下)需要大约一千行代码。换句话说——我的答案的价值在于我给你的信息,也就是你要求的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多