2012-06-07 5 views
25

Ich entwickle eine WebView-basierte Android-Anwendung und versuchte, die Touch-Ereignisse zu erfassen. jedoch ist es nicht funktioniert und ich sah diese Meldung im Protokoll:Wie zu beheben "Fräulein ein ziehen, wie wir auf die Antwort von WebCore für Touchdown warten"

„Miss a drag wie wir für WebCore Antwort für Touch warten down“

Weiß jemand, wie man dieses Problem zu beheben?

+0

hier gleiches Problem .. hast du den Grund hinter dieser Warnung finden? – Zombie

+0

Ich hatte auch das gleiche Problem ... noch keine Lösung? –

+0

nein noch nicht..aber ich denke, wir haben einen starken Punkt auf der Debatte von Native vs HTML-Anwendungen ... – John

Antwort

3

Zur Zeit habe ich das gleiche Problem bei der Implementierung einer OpenLayers-Karte in einem Android WebView. scheint seit 2009 eine offene Frage zu sein: Issue 4549 Eine Abhilfe erwähnt wird: Verwenden Sie

e.preventDefault() 

in jedem OnTouch ### - Funktion (Javascript).

Ein weiterer Hinweis war this answer on SO

Es funktionierte für mich, aber ich werde einen genaueren Blick auf WebView-Multitouch-Polyfill im Zusammenhang mit MTfix für Android (Leider hat sich als neuer Benutzer nehmen I`m nicht erlaubt, mehr Hyperlinks zu veröffentlichen als zwei, aber Google wird Ihnen helfen)

1

ich dieses Problem behoben mit

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

preventDefault() funktioniert auf einigen Geräten, dies funktionierte in Motorola 4.1. Derselbe Code funktionierte nicht in der Samsung Galaxie und in der Galaxie-Notiz "ich habe no_fast_draw = false", was diesem Touch-Problem ähnlich ist. – John

0

für mich die einzige Möglichkeit, das Hinzufügen ich dies Funktion bekommen konnte, war das Ereignis direkt, so dass es zu befestigen wird vor dem webCore gefeuert. addEventListenter war zu spät für mich und die Veranstaltung stagnierte im WebCore und platzte nicht auf. Dies ist auf einem Galaxy Note mit Android 4.0.4

Dies ist, wie ich es in meinem Fall festgelegt:

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