【问题标题】:Javascript touch events in an android webviewandroid webview中的Javascript触摸事件
【发布时间】:2018-06-06 16:35:14
【问题描述】:

我的javascript code 工作正常。 它所做的只是保存 mousedown 的坐标,并根据 mousedown 和 mouseup 坐标修改 mouseup 上的示意图。

我没有重新发明轮子,而是尝试通过将其加载到 webview 中来在 android 应用程序中使用它。

相关更改是更改 mousedown 和 up 监听器:

            canvas.addEventListener("touchstart", saveDownCoords, false);
            canvas.addEventListener("touchend", modifySchematic, false);

计算坐标的函数已经改变了:

function mouseCoords(e) {
  var cellSize = e.target.getAttribute("data-lib-shelves-cell-size");
  var cellRect = e.target.getBoundingClientRect();
  return {
      //x : Math.floor((e.clientX - cellRect.left) / cellSize),
      //y : Math.floor((e.clientY - cellRect.top) / cellSize)
      x : Math.floor((e.touches[0].clientX - cellRect.left) / cellSize),
      y : Math.floor((e.touches[0].clientY - cellRect.top) / cellSize)
  };
}

除非我触摸几根手指,否则根本没有任何效果。然后它执行程序对鼠标所做的操作,有时使用第一根手指向下,第二根手指向上;有时是第一根手指的向下和向上,但只有在使用第二根手指的情况下,绝不是在只有一根手指的情况下。

我没有为 webview 编写触摸处理程序,也没有为它所在的 Activity 编写触摸处理程序。

有没有人遇到过这样的行为?

【问题讨论】:

  • 我确切地知道发生了什么:一切正常,除了我需要放下第二根手指。然后,在发布后,一切正常,只考虑食指。

标签: javascript android webview touch-event


【解决方案1】:

我的问题在于 javascript 逻辑。 无法获取 touchend 的坐标,只能获取之前最后一次 touchmove 的坐标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    相关资源
    最近更新 更多