2012-02-08 4 views
1

Я бы хотел обнаружить какой-нибудь «хороший» способ (возможно, Modernizr, но независимо от того, должен ли макет иметь встроенные прокручиваемые области страницы, иначе (для некоторых мобильных пользователей) должен просто передавать весь контент как одну прокручиваемую массу.Обнаруживать, работает ли «переполнение: авто» (мобильные браузеры)

Конкретный случай - это «EULA» -подобная страница, где есть форма с кнопкой «Я ПРИНИМАЮ» или что-то еще, а затем масса отвратительных законных вещей. На большом экране я бы хотел, чтобы вся форма была видна, поэтому я хотел бы поместить законные вещи в свою собственную прокрутку. Тем не менее, на мобильном устройстве, которое было бы вроде уродливым (хотя я не являюсь мобильным ux-экспертом), поэтому я думал о том, чтобы просто отбросить его все в строке, чтобы пользователь мог прочитать текст (LOL) с помощью простых проверок для прокрутки, а затем в нижней части кнопки будут прокручиваться в представлении.

Я полагаю, что я мог бы просто проверить связь с Modernizr, но это не кажется совершенно правильным.

редактировать — хотя я уверен, что то, что я описал, вероятно, будет удобство выиграть в любом случае, то, я нахожу, что мои Android устройства не будут обращать внимание на «переполнение: авто» на a <div> в середине страницы.

+1

Это не делает существуют в этом пакете, но многие методы в проекте «cft» kangax могут быть полезны: http://kangax.github.com/cft/ - есть даже один для другой ошибки переполнения. –

+0

Хм, я посмотрю на них, но, возможно, на данный момент (и мои непосредственные цели не нужны для экстремальной строгости) проверка на «прикосновение» может быть что-то делать. Сенсорный свиток - это признак, который действительно является проблемой, ошибками переполнения или нет. Спасибо Alex :-) – Pointy

ответ

2

Подход, который я принял, состоит в том, чтобы полагаться на тесты и Modernizr.overflowscrolling. Если Modernizr вставляет классы и no-overflowscrolling в элемент html в DOM (или просто отметьте Modernizr.touch и Modernizr.overflowscrolling напрямую), то я избегаю overflow:auto. Это означает, что Android-устройства, которые неправильно используют overflow:auto, не получают его.

Это может быть несовершенное решение; могут быть устройства, которые могут обрабатывать overflow:auto, которые не получают его в этом случае. Но это не совсем конец света, по крайней мере, в моем случае. И, похоже, он работает правильно для всех наиболее распространенных устройств/браузеров.

И это имеет силу быть простым. Я уже имел Modernizr, загруженный для других целей.

+1

как проверить u на Modernizr.overflowscrolling ?? – ghostCoder

+1

Вам нужно либо построить Modernizr с помощью прокрутки css-переполнения (вы можете перейти на http://modernizr.com/download/ и установить флажок в разделе «Надстройки сообщества») или использовать addTest(), как показано на странице https: // GitHub.ком/Modernizr/Modernizr/BLOB/Master/функция-детектирует/CSS-перелив-scrolling.js. – Trott

+0

ОК сделал это ... но проблема в том, что он говорит, что свойство поддерживается, хотя его не работает :(http://stackoverflow.com/questions/10483397/test-for-overflow-yauto-returning-true- on-android-3-even-but-it-doesnt-wor # comment13549712_10483397 – ghostCoder

1

Как уже говорилось, Modernizr.overflowscrolling проверяет свойства overflow-scrolling CSS, а не для, может ли устройство прокрутки содержимого в пределах div с помощью overflow: auto.

Фактически, в моем недавнем тестировании Nexus 5 фактически возвращает Modernizr.overflowscrolling как false, поэтому на него нельзя положиться.

Это очень маленький скрипт (без зависимостей), кажется, чтобы включить сенсорные прокрутки для устройств (Android 2.3) не хватает поддержки ... http://chris-barr.com/2010/05/scrolling_a_overflowauto_element_on_a_touch_screen_device/

Ссылки на репозиторий: https://github.com/chrismbarr/TouchScroll

+0

Вы лучше включите скрипт здесь, как если бы ссылка изменила ваш ответ, будет недействительным. –

Смежные вопросы