iOS 7 - чи є спосіб відключити функцію проведення вперед і назад у Safari?


83

Для деяких веб-сторінок ми використовуємо функцію проведення пальцем ліворуч та праворуч від iPhone, щоб підняти меню. Тепер з iOS7 вони ввели можливість переходити назад і вперед на попередні та наступні сторінки історії браузера, проводячи пальцями вліво та вправо.

Але чи є спосіб вимкнути його для певних сторінок, щоб не мати конфліктної поведінки під час проведення пальцем?


Його слід відрізняти проведенням пальцем, починаючи поза екраном. У вас є приклад веб-сторінки, де виникає конфлікт?
Руперт Раунслі,

@RupertRawnsley Додайте подію touchstart / touchmove на свою веб-сторінку за допомогою console.log ('FIRED!'); у цьому. Проведіть пальцем по веб-сторінці з краю, і ви помітите, що подія ніколи не спрацьовує. Чи правильно я вважаю, що це буде новою очікуваною поведінкою?
Marcus

2
+1 за це. Проблемно, коли ви проводите пальцем, щоб відкрити меню.
TYRONEMICHAEL

2
+1 Користувач не уявляє, що таке пальцем поза екраном порівняно з екраном. Блер!
Джозеф Юнке

1
Мені, як користувачеві з поганим зором, потрібно сильно масштабувати та панорамувати, що цей жест зворотного руху зводить мене з розуму. Якщо хтось знає, як його відключити, я хочу знати.
Бретт Райан,

Відповіді:



12

Ви не можете його відключити безпосередньо, але власне проведення пальцем назад відбувається, лише якщо щось є в історії браузера.

Це не буде працювати в кожному випадку, але якщо у вас є одна сторінка веб-програми, відкрита в новій вкладці, ви можете запобігти її додаванню в історію за допомогою

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

замість pushState або

document.location.hash = url

5
Так, але це заважає лише історії в самому додатку під час навігації. Інші програми також могли надсилати історію, тому iOS теж виявлятиме ці історії.
чувак

6

Мені довелося застосувати 2 підходи:

1) Виправлення CSS лише для Chrome / Firefox

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

2) Виправлення JavaScript для Safari

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

З часом Safari застосує overscroll-behaviour-x, і ми зможемо видалити хак JS


Я додав це, і на Mac це заважає проведенню пальцем ліворуч назад. Однак він повністю порушує функцію "назад" (включаючи кнопку "Назад"), тому її не можна використовувати як обхідний шлях.
Шіме Відас

У моєму випадку це була мета, коли я створював односторінковий додаток
Джон Доерті

2
Але все-таки можливо, що хтось відкриє ваш додаток, натиснувши посилання на іншому веб-сайті (тобто, якщо цей сайт посилається на ваш додаток). Щоб це виправити, вам все одно доведеться виявляти жестикулювання пальцем за допомогою touchmoveподій і виконувати наведений вище код лише в тому випадку, якщо перед ним не було безпосередньо проведені. Це повинно бути можливим.
Шіме Відас,

Я оновив це, включивши лише опцію CSS для Chrome та Firefox
Джон Доерті

Ви впевнені, що це працює на iOS? Я щойно тестував overscroll-behavior-x: none;Chrome на iOS 13, і це не вплинуло на поведінку навігації. Проведення пальцем праворуч від лівого краю повертається назад (і навіть якщо це перша сторінка в історії вкладок, вона все одно повертається на головний екран).
naktinis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.