2009-06-27 4 views
1

Ich mache eine mobile Version meiner Website, und versuchen, es so nativ wie möglich auf dem iPhone fühlen. Alle Hintergrundbereiche der Seite reagieren jedoch auf Wischgesten, sodass Sie die Seite teilweise vom Bildschirm entfernen können. Insbesondere, wenn der Benutzer zum Beispiel links berührt und wischt, verschiebt sich der Inhalt von der Kante des Bildschirms und man kann einen grauen Hintergrund "hinter" der Seite sehen. Wie kann dies verhindert werden? Ich möchte die Seite selbst haben 320x480 mit Scroll-Swiping deaktiviert (außer auf Listenelemente, die ich wähle).stop Hintergrund von iphone webapp von der Antwort auf Swipes

Ich habe die folgenden Meta-Tags zum Seitenanfang hinzugefügt:

<meta name="viewport" content="width=320; height=480; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/> 
<meta name="apple-mobile-web-app-capable" content="yes" /> 
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> 

Ich habe versucht, auch die folgenden als Ereignishandler für das Berührungsstart, Berührungsbewegungs und touchend Ereignisse des Körperelements:

function cancelTouchEvent(e) { 
    if (!e) var e = window.event; 
    e.cancelBubble = true; 
    if (e.stopPropagation) e.stopPropagation(); 
    if (e.preventDefault) e.preventDefault(); 
    return false; 
} 

Es ist nicht das streichende Verhalten zu stoppen, nicht aber Klicks auf alle Links auf der Seite verhindern ...

Jede Hilfe ist sehr geschätzt. Vielen Dank!

Antwort

4

Ich hatte das gleiche Problem, aber auf dem iPad, und konnte niemanden finden, der in der Lage gewesen war, das Problem im allgemeinen Fall zu lösen, aber ich glaube, ich habe eine Lösung gefunden, die funktioniert.

Die Lösung ist (in Javascript) -

document.addEventListener('touchmove', function(e) { 
    if (e.preventDefault) { e.preventDefault(); }}); 

Einfach, nicht wahr? Es funktioniert, indem das Standardverhalten bei 'touchmove'-Ereignissen verhindert wird, so dass das Überstreichen des Hintergrunds nicht stattfindet. Es hat keinen Einfluss auf die simulierten Klickereignisse.