25

我正在开发一个基于 webView 的 android 应用程序,并试图捕获触摸事件。但是它不起作用,我在日志中看到了这条消息:

“因为我们正在等待 WebCore 对着陆的响应,所以错过了一个阻力”

有谁知道如何解决这个问题?

4

3 回答 3

3

目前,我在 Android WebView 中实现 OpenLayers 地图时面临同样的问题。自 2009 年以来似乎是一个未解决的问题:问题 4549 此处 提到了一种解决方法:使用

 e.preventDefault() 

在每个 ontouch###-function (Javascript) 中。

另一个提示是这个关于 SO 的答案

它对我有用,但我将仔细研究与 MTfix for Android 相关的 WebView-MultiTouch-Polyfill(对不起,作为新用户,我不允许发布超过两个的超链接,但 Google 会提供帮助你)

于 2012-06-28T16:40:03.577 回答
1

我通过添加解决了这个问题

    document.addEventListener( 'touchstart', function(e){ onStart(e); }, false );
    function onStart ( touchEvent ) {
      if( navigator.userAgent.match(/Android/i) ) {
        touchEvent.preventDefault();
      }
    }
于 2013-03-12T10:48:50.727 回答
0

对我来说,我可以让它发挥作用的唯一方法是直接附加事件,以便在 webCore 之前触发它。addEventListenter 对我来说太晚了,事件在 webCore 上停滞不前,没有冒泡。这是在带有 Android 4.0.4 的 Galaxy Note 上

这就是我在我的实例中修复它的方式:

var myDiv = document.createElement("div");
myDiv.className = "myClass";
myDiv.id = "myId";
myDiv.setAttribute("data-open","false");
myDiv.ontouchmove = function(e) {
  //e is touch event, this is myDiv                     
  e.preventDefault();
  //e.changedTouches[0].pageX
  //http://www.w3.org/TR/touch-events/#idl-def-TouchEvent
};
于 2014-01-16T12:37:25.500 回答