35

Su un telefono Windows, in IE gli utenti possono andare avanti e indietro scorrendo sullo schermo se il passaggio viene dal bordo. Questa funzionalità a livello di sistema operativo sta ostacolando la UX della mia pagina web.Disabilita lo spostamento della pagina Web sul passaggio (avanti e indietro)

C'è js o css che può disattivarlo? Farebbe anche qualche trucco.

Un'istantanea dal sito Web di Windows Phone: enter image description here

Ecco il link alla pagina di riferimento: http://www.windowsphone.com/en-in/how-to/wp8/basics/gestures-swipe-pan-and-stretch

prega di notare che ho ancora bisogno touchaction abilitato per lo scorrimento orizzontale.

+1

Hai provato a giocherellare con '-ms-scroll-chaining: none;' CSS param? – SzybkiSasza

+1

È questo quello che stai cercando? http://stackoverflow.com/a/13709150/1540570 –

+0

È corretto, che non esiste una risposta corretta? – drunkcamel

risposta

0

Come prevenire l'azione predefinita dell'evento di scorrimento. Da qualche parte nel vostro document.ready aggiungere (nota ho incluso il document.ready in questo esempio, solo la funzione deve essere aggiunto):

$(document).ready(function(){ $(window).on('touchmove',function(e){e.preventDefault();}); });

In questo caso credo che l'evento si chiama 'touchmove 'potrebbe essere necessario estenderlo per ignorare anche il comportamento predefinito di touchstart/touchend ma non sono sicuro al 100%.

+2

Ciò disabilita anche lo scorrimento. –

+1

È possibile memorizzare l'ultima posizione di tocco e determinare se l'offset è più verticale o più orizzontale, ad esempio il punto (1,1); se il tocco successivo fosse (3,2), sapresti che l'utente si è spostato più nella direzione orizzontale che in verticale, nel qual caso chiameresti 'preventDefault()', e altrimenti permetterlo. Ecco un post [post] simile (http://stackoverflow.com/questions/13278087/determine-vertical-direction-of-a-touchmove) – clovola

2

Copia e incolla questo JavaScript:

var xPos = null; 
var yPos = null; 
window.addEventListener("touchmove", function (event) { 
    var touch = event.originalEvent.touches[ 0 ]; 
    oldX = xPos; 
    oldY = yPos; 
    xPos = touch.pageX; 
    yPos = touch.pageY; 
    if (oldX == null && oldY == null) { 
     return false; 
    } 
    else { 
     if (Math.abs(oldX-xPos) > Math.abs(oldY-yPos)) { 
      event.preventDefault(); 
      return false; 
     } 
    } 
}); 

Se lo vuoi ridotte di, copiare e incollare questo:

var xPos=null;var yPos=null;window.addEventListener("touchmove",function(event){var touch=event.originalEvent.touches[0];oldX=xPos;oldY=yPos;xPos=touch.pageX;yPos=touch.pageY;if(oldX==null && oldY==null){return false;}else{if(Math.abs(oldX-xPos)>Math.abs(oldY-yPos)){event.preventDefault();return false;}}});

+0

disabilita scorri pure –

+0

Questa misura se scorri in direzione orizzontale più che verticale direzione, quindi non dovrebbe disabilitare lo scroll a meno che non si scorra! –

-2
*{ 
    -webkit-touch-callout: none; 
} 

Il risultato è quello di disattivare completamente tutti gli eventi di tocco

0

Check out this Codepen di David Hill.

var elem = document.getElementById("container"); //area we don't want touch drag 

var defaultPrevent=function(e){e.preventDefault();} 
elem.addEventListener("touchstart", defaultPrevent); 
elem.addEventListener("touchmove" , defaultPrevent); 

Io in realtà penso che questo è un modo intelligente per costruire oggetti troppo.

Problemi correlati