35

Bir Windows telefonunda, IE'de kullanıcılar kaydırmadan kenardan geliyorsa ekrana hızlıca kaydırarak ileri geri gidebilirler. Bu OS seviyesi işlevselliği, web sayfamın UX'sini engelliyor.Web sayfası gezinmeyi hızlıca kaydırın (geri ve ileri)

Bunu devre dışı bırakabilecek herhangi bir js veya css var mı? Bazı hack de yapardı.

WindowsPhone web sitesinden bir anlık:

http://www.windowsphone.com/en-in/how-to/wp8/basics/gestures-swipe-pan-and-stretch Hala yatay kaydırma için etkin touchaction gerektiğini unutmayın: Burada enter image description here

başvuru sayfasına bağlantıdır.

+1

-MS-scroll-chaining ile çalışmayı denediniz mi: none; 'CSS param? – SzybkiSasza

+1

Bu sizin için mi arıyorsunuz? http://stackoverflow.com/a/13709150/1540570 –

+0

Doğru mu, doğru cevap yok mu? – drunkcamel

cevap

0

Kaydırma olayının varsayılan eylemini önlemeye ne dersin. Bir yerde senin document.ready ekleyin (bu örnekte document.ready yer verdik dikkat, sadece işlev eklenmesi gerekiyor): Bu durumda

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

Ben olay 'touchmove denir inanıyoruz Ayrıca, touchstart/touchend'in varsayılan davranışını da göz ardı etmek için bunu genişletmeniz gerekebilir, ancak% 100 emin değilim.

+2

Bu, kaydırma işlemini de devre dışı bırakır. –

+1

Son temas konumunu saklayabilir ve ofsetin daha dikey veya daha yatay olup olmadığını belirleyebilir, nokta (1,1); Bir sonraki dokunma hareketi (3,2) olsaydı, kullanıcının dikeyden daha fazla yatay yönde hareket ettiğini biliyordunuz, bu durumda 'preventDefault()' diyecektiniz ve buna izin verin. İşte benzer bir [post] (http://stackoverflow.com/questions/13278087/determine-vertical-direction-of-a-touchmove) – clovola

2

kopyalayıp bu JavaScript yapıştırın:,

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; 
     } 
    } 
}); 

bunu minified istiyorsanız kopyalama ve yapıştırma bu:

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

da kaydırmayı devre dışı bırakıyor –

+0

Bu yatay yönde dikeyden daha hızlı kaydırırsanız yön, bu yüzden çarpık kaydırmadıkça kaydırma devre dışı bırakmamalıdır! –

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

sonuç tamamen herhangi dokunmatik olayları devre dışı bırakmak için

0

David Hill tarafından 10.

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); 

Aslında bunun nesneleri oluşturmanın güzel bir yolu olduğunu düşünüyorum.