FAQ
这是一些关于 Slate 的常见问题:
为什么粘贴的内容转换成了纯文本?
和其它编辑器不同,Slate 的核心原则之一是它 不 对编辑内容预设一个特殊的 "schema"。这意味着 Slate 的核心对【块级引用】和【加粗格式】是不了解的。
在多数情形下,这都能提高灵活性且没有太多问题,不过在一些特殊场景下你也需要投入一些额外的工作,而粘贴就是这些场景之一。
由于 Slate 对你的 schema 没有任何了解,因而它是不知道如何解析粘贴入的 HTML(或其它内容)的。所以,默认情况下不论用户向 Slate 编辑器中粘贴入了什么内容,它都会将其解析为纯文本。如果你希望对粘贴内容有更智能的控制,你需要定义一个 onPaste
回调以按照你的预期来解析内容。
Block 节点能有什么样的子节点?
在 Slate 中,你可以使用 Block
节点来构建复杂的结构。Block 节点可以包含嵌套的 block 节点(既可以为空,也可以为非空)、inline 节点、文本节点和普通的 DOM 内容(要求 contentEditable = {false}
)。
如果需要处理一个不需可编辑的元素,你可以选择使用 void
节点或 contentEditable = {false}
的 DOM 元素。如果你需要在 Slate schema 中表达这个内容,并让 Slate 处理它,那么这里倾向于使用前者。
Slate 支持什么浏览器和设备?
Slate 的目标是支持包括桌面和移动设备在内的所有现代浏览器。
不过,现在 Slate 还处于 beta 状态,因此支持程度还没有达到预期。目前,它在最新的几个桌面版 Chrome、Firefox 和 Safari 版本中测试过。它还没有在 Internet Explorer、Edge 和移动设备上测试。如果你想支持更多的浏览器或设备,我们非常欢迎你提出 pull request!