粘贴触发滚动的文本会使光标在视觉上错误的位置

Pasting text that triggers the scroll leaves cursor in visually the wrong location

看看我说的是什么意思:https://codemirror.net/demo/indentwrap.html

粘贴足够大的内容以触发滚动条,您可能需要先删除现有文本:

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

在您输入或移动光标之前,光标不会出现在正确的位置。有没有人看到这个或知道解决方案或解决方法?


编辑:

如果我为粘贴设置侦听器并执行 refresh()scrollIntoView() 它似乎大部分时间都有效...但如果我在某些内容之间发布,似乎并不总是有效原因。

虽然它有一个小的副作用,即右侧总是有一个 17px 的填充...将 padding-right: 17px !important 添加到 .CodeMirror-sizer 似乎可以解决问题。

问题似乎是由于当滚动条出现时,它使滚动条可见,并且还向 sizer 添加了 17px 的右填充(因此文本不会 运行 在滚动条下方) .光标的位置似乎取决于是否在用户键入或执行会移动光标的操作之前从未添加该填充。通过始终使用正确的填充,我们不会 运行 陷入这个问题。

小的副作用对我来说并不重要,所以我对这个解决方法很满意,但是...如果其他人找到更好的解决方案,我希望看到它。