将 MouseEvent 序列化为 JSON

问题描述 投票:0回答:1

我需要将 MouseEvent 序列化为 JSON,但是:

canvas.addEventListener('mousedown', function (e) {
    console.log(JSON.stringify(e))
});

仅打印事件的第一个元素:

{"isTrusted": true}

我希望它将整个 MouseEvent 转换为 JSON,包括

offsetX
offsetY
等内容。

我已经尝试过使用 dojox.json.refJSON-jsthisthis 和其他一些方法来限制 JSON 字符串化深度和删除循环结构。我认为圆形结构可能不是问题所在。 我目前使用这种方法

来解决这个问题,但一定有更好的方法。

感觉就像是necrobumping,但对于那些寻求解决方案的人,我分享:
javascript json dom-events
1个回答
0
投票
function objectizeEvent<T extends Event>(event: T) { const keys = Object.keys(MouseEvent.prototype) as (keyof T)[]; const entries = keys.map((k) => [k, event[k]]); return Object.fromEntries(entries); }

这将返回一个具有
MouseEvent
大部分属性的对象。 请注意,不可序列化的值(例如函数)将是

undefined

	

© www.soinside.com 2019 - 2024. All rights reserved.