Webdatarocks pivot聚焦单元格按方向键触发preventDefault未定义TypeError
报错根因
该报错为Webdatarocks组件的已知问题,根因为组件内置的方向键导航处理逻辑未对接收的事件对象做非空校验,当事件传递链路异常导致事件对象为undefined时,调用preventDefault方法就会抛出该异常。
常见触发场景:
- 使用的组件版本低于2.9.42,官方未修复该边界问题
- 项目内存在其他全局键盘事件拦截逻辑,提前销毁了事件对象
- 使用Vue/React等框架的封装组件时,事件回调绑定异常导致参数丢失
解决方案
方案1:升级组件版本(最推荐)
Webdatarocks官方在2.9.42版本中已修复该问题,直接升级到最新稳定版即可解决,无需额外修改业务代码。
方案2:代码补丁临时修复(不适合升级的场景)
如果当前项目无法直接升级版本,可以在组件初始化前注入原型补丁,手动补全事件对象的缺失逻辑:
// Webdatarocks方向键报错修复补丁 if (window.WebDataRocks?.prototype?.onKeyDown) { const originalKeyDownHandler = window.WebDataRocks.prototype.onKeyDown window.WebDataRocks.prototype.onKeyDown = function (event) { // 兼容事件对象为空的场景 const e = event || window.event || { preventDefault: () => {}, stopPropagation: () => {} } return originalKeyDownHandler.call(this, e) } }
将上述代码放在Webdatarocks实例初始化逻辑之前即可生效。
方案3:排查冲突事件
检查项目内是否存在全局键盘事件监听逻辑,尤其是监听了方向键、并且调用了stopImmediatePropagation()的逻辑,调整事件触发优先级或者移除冲突逻辑即可。
内容的提问来源于stack exchange,提问作者IOrch-K
相关产品推荐
相关产品推荐

