35

Trên điện thoại Windows, người dùng IE có thể quay lại và chuyển tiếp bằng cách vuốt trên màn hình nếu thao tác vuốt đến từ cạnh. Chức năng cấp hệ điều hành này đang cản trở UX của trang web của tôi.Tắt điều hướng trang web khi vuốt (quay lại và tiến)

Có bất kỳ js hoặc css nào có thể vô hiệu hóa tính năng đó không? Một số hack cũng sẽ làm.

Một ảnh chụp từ trang web WindowsPhone của: enter image description here

Dưới đây là liên kết tới trang tài liệu tham khảo: http://www.windowsphone.com/en-in/how-to/wp8/basics/gestures-swipe-pan-and-stretch

Xin lưu ý rằng tôi vẫn cần touchaction kích hoạt cho cuộn ngang.

+1

Bạn đã thử sử dụng '-ms-scroll-chaining: none;' CSS param? – SzybkiSasza

+1

Đây có phải là những gì bạn đang tìm kiếm không? http://stackoverflow.com/a/13709150/1540570 –

+0

Có đúng không, không có câu trả lời đúng? – drunkcamel

Trả lời

0

Cách ngăn tác vụ mặc định của sự kiện vuốt. Một nơi nào đó trong document.ready của bạn thêm (lưu ý tôi đã bao gồm các document.ready trong ví dụ này, chỉ có các chức năng cần phải được bổ sung):

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

Trong trường hợp này tôi tin rằng sự kiện này được gọi là 'touchmove 'bạn có thể cần phải mở rộng này cũng bỏ qua hành vi mặc định của touchstart/touchend nhưng tôi không chắc chắn 100%.

+2

Điều đó vô hiệu hóa di chuyển là tốt, mặc dù. –

+1

Bạn có thể lưu trữ vị trí liên lạc cuối cùng và chỉ xác định xem chênh lệch có dọc hay ngang hơn không, giả sử bạn có điểm (1,1); nếu di chuyển tiếp theo là (3,2) bạn biết người dùng di chuyển nhiều hơn theo chiều ngang hơn chiều dọc, trong trường hợp đó bạn sẽ gọi 'preventDefault()', và nếu không thì cho phép nó. Đây là một [bài đăng] tương tự (http://stackoverflow.com/questions/13278087/determine-vertical-direction-of-a-touchmove) – clovola

2

Sao chép và dán JavaScript này:

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

Nếu bạn muốn nó minified, sao chép và dán này:

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

vô hiệu hóa cuộn cũng –

+0

Các biện pháp này nếu bạn vuốt theo chiều ngang nhiều hơn chiều dọc hướng, vì vậy nó không nên vô hiệu hóa di chuyển trừ khi bạn cuộn quanh co! –

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

Kết quả là để tắt hoàn toàn bất kỳ sự kiện liên lạc

0

Khám phá this Codepen của 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); 

Tôi thực sự nghĩ đây cũng là một cách hay để xây dựng các đối tượng.

Các vấn đề liên quan