luckysheet修复调整批注大小后文本换行消失的问题

文章主要讲述了在处理单元格批注大小调整时遇到的换行丢失问题,原因是jQuery的text()方法不包含换行符。提供了两种解决方案:一是使用innerText属性获取包含换行的文本,二是通过正则匹配HTML内容并添加换行符。修复的关键在于正确处理包含换行的文本内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

实施反映在单元格调整批注大小后,原先的换行消失了。见下图
 

 修正

        查阅源码,发现是调整大小时读取的文本值有问题。

源码位置:handle.js文件,鼠标松开的回调中有对批注框大小改变进行处理。

 源码中是使用jq的text方法获取文本,但是该方法返回的文本是一行,不包含换行符,所以需要有个包含换行符的字符串。

解决办法一

        直接获取原生dom的innerText属性就会包含换行符。(渲染出来文本有换行,innerText的值就有换行符。luckysheet中的批注能换行就是因为一对div标签包含一行数据

           // nby 修复调整批注大小后文本换行消失的问题
            const domText = luckysheetPostil.currentObj.find(".formulaInputFocus")[0].innerText
            d[ps_r][ps_c].ps.value = domText

解决办法二

        利用jq的html方法获取包含标签的文本,然后用正则拿到包含标签的内容的数组,最后用换行符拼接为字符串。代码如下:

        // nby 修复调整批注大小后文本换行消失的问题
		const domText = luckysheetPostil.currentObj.find(".formulaInputFocus").html();
		const textReg = /(?<=(<div[^>]*?>)).*?(?=(<\/div>))/g;
		const textResultArr = domText.match(textReg)
		if(textResultArr != null){
		    d[ps_r][ps_c].ps.value = textResultArr.join('\n')   //有匹配到div标签里面的内容,添加换行符
		}else{
           d[ps_r][ps_c].ps.value = luckysheetPostil.currentObj.find(".formulaInputFocus").text()  //匹配不到走以前的逻辑
		}
		// nby 修复调整批注大小后文本换行消失的问题 END

总结

        如果界面有换行,dom.innerText是包含换行符的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值