javascript - 如何将 touchevent 字符串化,忽略任何 DOM 引用?

标签 javascript dom serialization touch-event

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

当我尝试使用 JSON.stringify() 发送触摸事件时,它仅发送 {isTrusted: true}。我已经经历了this question中的一切没有运气。 second 中的功能和 third答案返回相同的结果,只是 isTrusted 对象。

在最上面的答案中,作者明确指出您不应删除所有 DOM 引用,但在我的用例中,我认为这是完全可以接受的。

我怎样才能做到这一点?

如果它能自动执行(检测它是否是 DOM 元素(“循环引用”)),那就太好了,但我想我也可以手动过滤以下键:

  • changedTouches[x].target
  • 当前目标
  • 路径[]
  • src元素
  • 目标
  • targetTouches[x].target
  • 触摸[x].目标
  • 查看

我找到了this question用于递归地循环访问对象,但注释暗示循环引用可能会导致溢出。最重要的是,我不确定如何“重建”该对象。

如有任何帮助,我们将不胜感激。

最佳答案

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

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;
}

关于javascript - 如何将 touchevent 字符串化,忽略任何 DOM 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888285/

相关文章:

c++ - 类型到 int 的映射

javascript - child Prop 是数组吗?

c# - 如何使按钮不显示但仍被javascript使用?

javascript - 在 MVC View 中使用 Knockout 多次生成并跟踪相同的模板?

javascript - 在另一个 DOM 元素上调度鼠标滚轮事件

javascript - jQuery .addClass 和 .fadeIn?

javascript - 如何解决十进制验证代码中的错误?

c++ - 用于序列化目的的 SQLite3

json - 为什么要在 JSON 中使用字符串来表示十进制数

javascript - 我的 DOM 中的 Google Analytics(分析)像素在哪里?