2012-06-07 14 views
25

Estoy desarrollando una aplicación para Android basada en WebView y estaba tratando de capturar los eventos táctiles. sin embargo, no está funcionando y vi este mensaje en el registro:Cómo solucionar "Perder un arrastre mientras esperamos la respuesta de WebCore para tocar"

"Señorita un lastre ya que estamos a la espera de la respuesta de WebCore para tocar tierra"

¿Alguien sabe cómo solucionar este problema?

+0

tienen el mismo problema aquí .. le parecen la razón detrás de esa advertencia? – Zombie

+0

yo también tenía el mismo problema ... ¿alguna solución todavía? –

+0

todavía no ... pero creo que tenemos un punto fuerte en el debate de las aplicaciones nativas vs HTML ... – John

Respuesta

3

Actualmente, estoy enfrentando el mismo problema al implementar un mapa de OpenLayers dentro de Android WebView. parece ser un tema abierto desde 2009: Issue 4549 Una solución alternativa se menciona allí: Uso

e.preventDefault() 

en todos los ### ontouch - función (Javascript).

Otra sugerencia fue this answer on SO

Funcionó para mí, pero voy a echar un vistazo más de cerca a WebView-MultiTouch-Polyfill en conexión con MTfix para Android (Lo siento, como un nuevo usuario no I`m pueden escribir comentarios más hipervínculos que dos, pero Google le ayudará a)

1

me fijo este problema con la adición de

document.addEventListener('touchstart', function(e){ onStart(e); }, false); 
    function onStart (touchEvent) { 
     if(navigator.userAgent.match(/Android/i)) { 
     touchEvent.preventDefault(); 
     } 
    } 
+0

preventDefault() funciona en algunos dispositivos, esto funcionó bien en Motorola 4.1. El mismo código no funcionó en Samsung Galaxy y en la nota de galaxia "obtuve no_fast_draw = false", que es similar a este problema táctil. – John

0

para mí la única manera de que pudiera conseguir que esto función era la de unir el evento directamente por lo que se dispara antes de webCore. addEventListenter fue demasiado tarde para mí y el evento se estancó en el webCore y no brotó. Se trata de una nota Galaxy con Android 4.0.4

Así es como me fijo en mi ejemplo:

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