Handle whitespace characters when pasting HTML#14849
Handle whitespace characters when pasting HTML#14849TCOTC wants to merge 3 commits intosiyuan-note:devfrom
Conversation
|
|
我发现前面很多工作都白费功夫了,从网页复制的时候浏览器自动处理了一部分空白符,粘贴到思源的时候不知道在哪里又处理掉了一部分空白符,还剩下了一小部分回车符和换行符的问题,所以核心修改只剩下了两行代码:
|
|
不能在这里进行处理。 html 不仅是网页端的,还有一些编辑器内部的格式,特殊情况下还会包含思源的。 |
|
那咋处理呢 |
|
复制的时候处理,不要在粘贴的时候处理。 |
|
复制的时候咋处理,思源又不能控制用户的其他软件? |
@TOTOC |
|
通过 siyuan-chrome |
|
这个不是剪藏,是复制粘贴 HTML,要通用的 |
|
可以用插件复制 |
|
不合理,应该做到无论从哪里复制的HTML都有正确的换行 |
|
何为正确的?这没有一个标准,应该保持用户原有的输入意图。 |
|
如果原本看上去没换行,那复制粘贴到思源里也不应该换行;如果原本看上去有换行,那复制粘贴到思源里就应该换行;如果原本看上去有一个换行,那复制粘贴到思源里就不应该有两个换行…… 以视觉呈现为标准。用户的意图跟用户看到的保持一致。 |
|
但是你这样修改的话,用户原本的换行会被移除。原本的 \n 会被替换为 br |
|
不这样修改的话,原本的换行 \n 就转换为空格了,根本不合理嘛 video.webm |
|
你要看 white-space 属性。我说的是网页上的换行复制到思源里就变成空格了 |
|
@88250 "/api/lute/html2BlockDOM" 看上去是进过这个接口后换行就变为空格了。 |
|
这是设计如此,否则会有其他问题 #6052 |
|
动了这个地方的逻辑其他地方可能也会有影响,所以目前不考虑改动了。 |
|
现在其他地方的换行已经有影响了,我觉得还是出现不符合预期的情况再单独处理 |
|
我的意思是除了 word 可能还有其他地方需要这样处理,所以最好是不要动,另外,这个动了可能还会影响分块,影响范围太大了。 |


fix #14775
粘贴 HTML 时对空白符进行处理
通过这些测试:
空白符测试.zip、空白符测试(新).zip
video.webm
网页摘录时对span元素white-space和word-wrap样式换行识别 #13195
video.webm
剪藏知乎遇到链接会换行 #14400
改进小红书剪藏 #14772
video.webm
剪藏 span 元素换行问题 #13838
过程中整理了一点相关信息:
https://app.affine.pro/workspace/b3d5bc3b-7ec4-469a-9c67-8159b5649af5/CKNPwmwoga?mode=edgeless
预处理空白字符.md.zip