请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

湖南大商帮

中级会员

57

主题

192

帖子

571

积分

中级会员

积分
571
湖南大商帮
中级会员   /  发表于:2025-3-25 11:00  /   查看:128  /  回复:9
不知道为何项目里的spread在编辑单元格的时候 按ESC键不会自动退出编辑模式了,也没有 哪里阻止退出编辑的代码,不知道从哪方面去排查

9 个回复

倒序浏览
Matthew.Xue
超级版主   /  发表于:2025-3-25 15:00:13
沙发
您好,请问除了esc键之外,您可以用其他方式退出编辑吗?
这里存在两种可能性,第一是您自己注册了esc快捷键,导致原本的esc快捷键功能失效,这种情况下您可以通过点击其他单元格退出编辑。
第二种可能性是您监听了editEnding事件,并取消了该事件,这种情况的特点是您无法通过任何方式退出编辑状态。

您可以自行检查一下代码中是否有以上两种情况,如果无法解决,请上传一个可复现问题的demo,我帮您检查一下。
回复 使用道具 举报
湖南大商帮
中级会员   /  发表于:2025-3-25 15:57:38
板凳
本帖最后由 湖南大商帮 于 2025-3-25 16:00 编辑

刚开始我也是认为哪里js代码拦截了按键事件,查了几天所有的按键事件,最后发现问题出在了 前同事 重写了大量的spread原生的内置对象方法事件等导致的,具体是哪个事件引起的还在逐一排查,我的妈呀,简直是丧尽天良了
image.png745430297.png
回复 使用道具 举报
湖南大商帮
中级会员   /  发表于:2025-3-25 16:11:13
地板
还给我来了一个
// 禁止退出编辑
const oldYoa = spreadNS.Worksheet.prototype.Yoa;
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-25 16:27:35
5#
湖南大商帮 发表于 2025-3-25 15:57
刚开始我也是认为哪里js代码拦截了按键事件,查了几天所有的按键事件,最后发现问题出在了 前同事 重写了大 ...

这种写法确实不太合适
而且也非常难以排查,有时间了还是重新写一下吧
回复 使用道具 举报
湖南大商帮
中级会员   /  发表于:2025-3-25 16:53:09
6#
嗯嗯,打算清理屎山了
回复 使用道具 举报
湖南大商帮
中级会员   /  发表于:2025-3-26 09:54:15
7#
最后再追问一下,在自定义方法里面,类似:
  spreadNS.CellTypes.Text.prototype.getEditorValue = function (editorContext, context) {
    ....业务代码
    })
发:在 运行时 业务代码里面有错误,控制台也不会有任何提示,所以就会导致按ESC键不会自动退出编辑模式,业务代码也没有try catch之类吃掉错误,是不是spread设计如此,原生方法里吃掉错误提示?
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-26 16:33:01
8#
湖南大商帮 发表于 2025-3-26 09:54
最后再追问一下,在自定义方法里面,类似:
  spreadNS.CellTypes.Text.prototype.getEditorValue = funct ...

是的,spreadjs会自己try catch,所以您修改了getEditorValue的话,最好自行try catch一下,如果业务代码没有catch到错误,被spreadjs捕获到,就不会打印log了
回复 使用道具 举报
湖南大商帮
中级会员   /  发表于:2025-3-26 16:57:13
9#
原来如此,那我知道怎么弄了,谢谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-3-27 17:50:44
10#
不客气,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部