如何对touchevent进行字符串化,忽略任何DOM引用?

时间:2017-08-25 19:30:30

标签: javascript dom serialization touch-event

我使用UniWebView作为Unity的UI。我需要发送touchevents来修改3D资产。 Uniwebview的消息传递是通过URL格式完成的,因此必须是字符串。

当我尝试使用JSON.stringify()发送touchevent时,它只发送{isTrusted: true}。我在this question没有运气的情况下经历了一切。 secondthird答案中的函数返回相同的结果,只返回isTrusted个对象。

在最佳答案中,作者明确表示不应删除所有DOM引用,但在我的用例中,我认为它完全可以接受。

我该怎么做?

如果它自动完成它会很好(检测它是否是一个DOM元素("循环引用"))但我想我也可以手动过滤以下键:

  • changedTouches [x] .target
  • currentTarget
  • path []
  • srcElement
  • targetTouches [x] .target
  • 触及[x] .target
  • 视图

我发现this question用于循环遍历对象,但注释意味着循环引用可能会导致溢出。最重要的是,我不确定如何重建"对象。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

不是解决方案,但暂时我只是检索触摸:

function getTouches(e) {
    let touches = e.touches;
    let output = [];
    for (let i = 0; i < touches.length; i++) {
        let touch = {
            clientX: touches[i].clientX,
            clientY: touches[i].clientY
        };
        output.push(touch);
    }
    return output;
}