Markdown-it 自定义 Token 类型导致 RTE 错误

优先级/严重性: 低?

平台: 使用新 RTE 的设备。

描述: 创建自定义令牌类型,以前仅使用 markdown-it 引擎即可正常工作,但在 ProseMirror 中会导致错误。由于没有 ProseMirror schema 来处理解析到 DOM 的内容,任何自定义令牌类型都会产生错误。同样,在 RTE 和带有 BBCode 的 Markdown 之间切换时也会出现行为问题。

重现步骤:

先 RTE:

  1. 打开编辑器
  2. 将模式设置为 RTE
  3. 插入自定义 BBCode。
    a. 例如,在 Discourse Meta 中:[wrap=test2 user-id=1]Content[/wrap]
  4. 忽略错误并切换 RTE 和 md 模式。
    a. BBCode 被转义

先 Markdown:

  1. 打开编辑器
  2. 将模式设置为 Markdown
  3. 插入自定义 BBCode。
  4. 在 md 模式和 RTE 之间切换。
    a. BBCode 不可见
  5. 切换回以查看原始代码。

当前解决方法:
仅使用 Markdown 模式。


出现错误本身不是什么大问题,更大的问题在于切换时或插入代码时的奇怪行为。

理想的解决方案是让每个 markdown 插件创建一个合适的向导/ProseMirror schema 来处理它。

关于通用的 [wrap] bbcode,也许最好让它保留为纯文本,因为在同一个 Discourse 实例中可能有多个组件使用通用的 bbcode。理想的解决方案可能是让开发人员创建自定义向导并将其输出匹配到他们自己的实现,并在找不到匹配项时将其回退为纯文本。

更广泛地说,对于任何尚未更新为使用 ProseMirror 的现有插件,让它默认使用纯文本(未转义/隐藏)将是一个很好的临时回退方案。

2 个赞

感谢你的报告,@renato 正在关注此类边缘情况,wrap 一直是我们用于某些主题组件的首选,我们会让它正常工作的。

2 个赞

如果我在 Markdown 中添加图库标签 [grid],然后在 WYSIWYG 模式下重新编辑我的帖子,我会收到类似的错误消息。

我知道这个问题是已知的并且正在处理中,我只是添加了实际的错误消息:

No parser processed bbcode_open token for tag: div, attrs: [["class","d-image-grid"]]

供在遇到此问题后(就像我刚才那样)在元(meta)上搜索此字符串的人员参考。 :slight_smile:

1 个赞

我们已知悉,问题确实正在处理中,预计几周内解决。

3 个赞

我自己也遇到了这个问题。很高兴它正在被处理。

网格使帖子看起来很漂亮,而不是用户在帖子中上传多张图片时造成的糟糕混乱。