iOS 7 - có cách nào để tắt chức năng vuốt qua lại trong Safari không?


82

Đối với một số trang web, chúng tôi sử dụng chức năng vuốt sang trái và phải của iPhone để kéo các menu lên. Giờ đây với iOS7, họ đã giới thiệu khả năng quay lại và chuyển tiếp đến các trang trước và tiếp theo của lịch sử trình duyệt bằng cách vuốt sang trái và phải theo chuyển động.

Nhưng có cách nào để tắt nó cho các trang cụ thể để không có hành vi xung đột trong các hành động vuốt không?


Nó nên được phân biệt bởi màn hình bắt đầu vuốt. Bạn có một trang web mẫu nơi xảy ra xung đột không?
Rupert Rawnsley

@RupertRawnsley Thêm sự kiện touchstart / touchmove vào trang web của bạn bằng console.log ('FIRED!'); trong đó. Di chuyển ngón tay của bạn lên trang web từ cạnh và bạn sẽ nhận thấy sự kiện không bao giờ xảy ra. Tôi có đúng khi cho rằng đây sẽ là hành vi được mong đợi mới không?
Marcus

2
+ 1 cho điều này. Sự cố khi bạn vuốt để mở menu.
TYRONEMICHAEL

2
+1 Người dùng không biết vuốt ngoài màn hình so với vuốt trên màn hình là gì. Blergh!
Joseph Juhnke

1
Là một người dùng có thị lực kém, tôi cần phải thu phóng nhiều và xoay, cử chỉ vuốt ngược đó khiến tôi phát điên. Nếu ai biết cách tắt nó, tôi muốn biết.
Brett Ryan

Câu trả lời:



12

Bạn không thể trực tiếp vô hiệu hóa nó, nhưng thao tác vuốt ngược lại chỉ xảy ra nếu có thứ gì đó trong lịch sử trình duyệt.

Nó sẽ không hoạt động trong mọi trường hợp, nhưng nếu bạn có một ứng dụng web trên một trang được mở trong tab mới, bạn có thể ngăn nó thêm vào lịch sử bằng cách sử dụng

window.history.replaceState(null, null, "#" + url)

thay vì pushState hoặc

document.location.hash = url

5
Có nhưng điều này chỉ ngăn lịch sử trong chính ứng dụng khi điều hướng. Các ứng dụng khác cũng có thể đã tạo lịch sử, do đó iOS cũng sẽ phát hiện các lịch sử đó.
anh chàng

5

Tôi đã phải sử dụng 2 cách tiếp cận:

1) CSS chỉ sửa chữa cho Chrome / Firefox

html, body {
    overscroll-behavior-x: none;
}

2) Sửa lỗi JavaScript cho Safari

if (window.safari) {
    history.pushState(null, null, location.href);
    window.onpopstate = function(event) {
        history.go(1);
    };
}

Theo thời gian, Safari sẽ triển khai overscroll-behavior-x và chúng tôi sẽ có thể xóa bản hack JS


Tôi đã thêm điều này và trên Mac, nó ngăn không cho thao tác vuốt sang trái kích hoạt trở lại. Tuy nhiên, nó phá vỡ hoàn toàn chức năng quay lại (bao gồm cả nút Quay lại), vì vậy không thể sử dụng nó như một giải pháp thay thế.
Šime Vidas

Trong trường hợp của tôi đó là mục tiêu như tôi đang xây dựng một ứng dụng trang duy nhất
John Doherty

2
Nhưng vẫn có khả năng ai đó mở ứng dụng của bạn bằng cách nhấp vào liên kết trên trang web khác (tức là nếu trang web đó liên kết với ứng dụng của bạn). Để khắc phục điều này, bạn vẫn phải phát hiện các cử chỉ vuốt qua touchmovecác sự kiện và chỉ thực thi mã trên nếu nó không được thực hiện ngay trước thao tác vuốt. Nó sẽ có thể.
Šime Vidas

Tôi đã cập nhật này bao gồm một CSS chỉ lựa chọn dành cho Chrome và Firefox
John Doherty

Bạn có chắc điều này hoạt động trên iOS không? Tôi vừa thử nghiệm overscroll-behavior-x: none;trên Chrome trên iOS 13 và nó không ảnh hưởng đến hành vi điều hướng vuốt. Vuốt sang phải ở cạnh trái để quay lại (và ngay cả khi đây là trang đầu tiên trong lịch sử tab, nó vẫn quay trở lại màn hình chính).
naktinis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.