iOS Javascript DOM "Замораживание?" - PullRequest
5 голосов
/ 02 декабря 2011

Несколько вопросов здесь:

  1. Есть ли способ запретить iOS замораживать JavaScript на странице во время прокрутки?

  2. Замораживается ли iOSJavaScript, когда вы находитесь в другой вкладке или если вы переключаете приложения?

  3. Существуют ли какие-либо другие основные ограничения JavaScript на iOS?

Ответы [ 2 ]

6 голосов
/ 14 марта 2013

iOS 6.x приостанавливает все таймеры событий в ответ на сенсорные события, такие как прокрутка, и имеет тенденцию не запускать все таймеры снова после завершения события. Это хорошо известная ошибка iOS 6, которая очень раздражает. Это в значительной степени нарушает параллакс и прочее. Некоторые люди прибегают к созданию собственных функций прокрутки.

Вот еще один StackOverflow на ту же тему: Safari для iOS 6, setInterval не срабатывает

и еще: setInterval делает паузы в iphone / ipad (мобильный Safari) во время прокрутки

и вот самое близкое к нему сообщение об ошибке (Apple не публикует отчеты об ошибках, чтобы поддерживать иллюзию совершенства, поэтому разработчики создали свой собственный сайт ошибок): http://openradar.appspot.com/12756410

Этот фрагмент кода разблокирует таймеры, которые были повреждены / потеряны / уничтожены iOS во время прокрутки страницы: https://gist.github.com/ronkorving/3755461

Это еще одна попытка исправить зависание: Функция событий iOS 6 js не вызывается, если в ней есть setTimeout

К сожалению, вы ничего не можете сделать для запуска событий при прокрутке страницы. Например, исчезнуть обратная ссылка при прокрутке страницы. Когда дело доходит до прокрутки, iOS6 не в состоянии потереть животик и погладить его по голове. (iOS5 работает нормально, кстати. Это регрессия)

1 голос
/ 02 декабря 2011

Чтобы ответить на третий вопрос, ограничением приличного размера является то, что иногда innerHTML просто не работает . Из принятого ответа:

Это происходит, когда процессор телефона очень занят (скажем, 100%). Тогда механизм рендеринга иногда забывает о настройках innerHTML.

Решение, включенное в мой проект унификации, состоит в проверке наличия элемента в childNodes, в противном случае примените его снова.

...