在Elm中更新contenteditable div时光标位置丢失

时间:2018-08-18 18:28:51

标签: html contenteditable elm

键入内容可编辑的div时如何将光标保持在正确的位置?

我正在使用Elm创建一个文本框,我需要对框中的文本进行每次输入处理。使用contenteditable div而不是textarea的原因是,我需要能够识别某些单词,并在键入时将它们变成可点击的链接。

问题在于,当更新文本时,光标会返回到文本的开头,因此所有内容都是从后到前键入的。

这是一个演示问题的最小示例:

stepi

1 个答案:

答案 0 :(得分:0)

这似乎与这里的问题非常相似:Elm - textarea selection range disappearing

问题在于,当Elm扩散并重新渲染视图时,浏览器没有重新渲染更改的选择属性,从而保留了HTML。我在那里使用了一种破解工具,在每次迭代时都对内容进行了重排,从而迫使元素实际进行了重新渲染,并正确应用了选择属性。

在模型中放置一个计数器,并在每次渲染视图时增加它。然后在您的文本框元素前面交替插入一个空的div。 (if i % 2 == 0 ...