0

我正在使用VisualEditor扩展MediaWiki实现,并遇到以下情况:

我有一个 div,其内容(打开和关闭标签之间的文本)应与在 wiki 和可视化编辑器中看到的不同。在 wiki 中,我想查看全文,但在 VE 中,我只想查看缩写词。这些也可以在 VE 中修改/删除/扩展。

例如,我想Product A, Product B and Product C在 wiki 中看到,但pa,pb,pc在 VE 中。当我将 VE 中的值更改为,比如说,px,py我想Product X and Product Y在 wiki 中查看。

问题是 VE 会自动为文本创建一个段落,所以在 VE 中数据是这样存储的:

data[i]:   My-Custom-Div-Data-Structure
data[i+1]: Paragraph
data[i+2]: T
data[i+3]: e
data[i+4]: x
data[i+5]: t
data[i+6]: /Paragraph
data[i+7]: /My-Custom-Div-Data-Structure

在一个方向(HTML Dom -> VE 线性数据)我通过在我的自定义数据结构的 toDataElement 函数中将新值设置为 domElement 来解决这个问题。

但是我怎么能意识到另一个方向呢?我有一个 VE 线性数据元素,但我无法将正确的值设置为内部/外部 HTML/Text 或 textContent,因为在处理完我的自定义数据结构后,旧值会从段落中获取并插入到 div 之间,导致双重文本。

4

1 回答 1

0

我无法访问该段落,所以我使用了一个非常丑陋的 hack。在ve.dm.Converter.js.prototype.getDomSubtreeFromData中,在插入段落文本的行中,我添加了一个检查父项是否属于我的自定义数据类型的text.length > 0检查(在第 1220 行附近)。

这是一个非常丑陋的解决方案,但遗憾的是我现在不知道更好的解决方案。

于 2016-04-12T09:28:16.847 回答