我正在使用 VisualEditor 扩展 MediaWiki 实施,并且遇到以下情况:
我有一个div,其内容(打开和关闭标记之间的文本)应该与wiki和VisualEditor中看到的不同。在wiki中,我想查看全文,但在VE中我只想看缩写。这些也可以在VE中修改/删除/扩展。
例如,我想在维基中看到Product A, Product B and Product C
,但在VE中看pa,pb,pc
。当我将VE中的值更改为px,py
时,我想在维基中看到Product X and Product Y
。
问题是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 /文本或textContent,因为在我的自定义数据结构得到处理后,旧的值取自段落并插入div之间,导致双重文本。
答案 0 :(得分:0)
我无法访问该段落所以我使用了一个非常丑陋的黑客。在ve.dm.Converter.js.prototype.getDomSubtreeFromData
中,在插入段落文本的行中,我添加了一个检查,如果父级是我的自定义数据类型,则检查text.length > 0
(第1220行)。
这是一个非常丑陋的解决方案,但遗憾的是我现在还不知道更好。