Предотвращение перезагрузки кэшированного iPhone webapp (прокрутка вверх)

У меня есть iPhone webapp, который использует манифест кэша для работы в автономном режиме. Я добавляю webapp на свой домашний экран, использую его (скажем, прокрутите до определенного места на странице), затем вернитесь на рабочий стол. Когда я снова открываю приложение, на короткое время я вижу, где я был (в этом прокрученном месте на этой странице), но затем приложение "перезагружается", и я получаю прокрутку вверху главной страницы. Есть ли способ предотвратить эту "перезагрузку"? Это происходит даже в режиме самолета (т.е. все работает с кешем).

Ответ 1

Вы видите только начальное изображение по умолчанию, которое представляет собой только скриншот последнего места, в котором вы были. Это не "перезагрузка"; приложение не было загружено для начала.

Найдите "apple-touch-startup-image", чтобы установить реальное загрузочное изображение.

Ответ 2

То, с чем я боюсь, заключается в том, что приложение, по-видимому, остается "в памяти" дольше, если я использую обычный Safari, а не работает в режиме "apple-mobile-web-app-able". В более позднем случае что-то так же просто, как нажатие кнопки "домой", затем переключение задачи в приложение вызывает перезагрузку. Выполнение того же самого в Safari часто не перезагружается. Так что я хуже, используя "apple-mobile-web-app-able".

Ответ 3

Я не верю, что есть реальное событие "перезагрузки". onload и onunload - все, что мы получаем.

обработчик onload запускается, как если бы вы впервые причаливали к странице.

обработчик onunload является ключом к очистке старого содержимого.

Мне нравится предоставлять альтернативный контент для людей, которые возвращаются в мое веб-приложение.

window.onunload=function(){
  document.getElementsByTagName('body')[0].className+=' unloading'
}

И пусть CSS выполняет грязную работу, чтобы скрыть большую часть тела и показать альтернативный контент.

(этот ответ не зависит от jQuery или других фреймворков)

Ответ 4

//при загрузке

window.scroll(0,0);

Чтобы убедиться, что во время запуска не отображается старый контент, я использую его на своей странице:

window.addEventListener('unload', function() {$ ('body'). hide();});

Таким образом, последнее состояние страницы пуст и является тем, что отображается пользователю, когда страница снова открывается.