Веб-приложение iPhone кеширует js, через некоторое время не обновится? - PullRequest
2 голосов
/ 25 января 2012

У меня есть веб-приложение, которое разработано определенным образом, в index.html оно имеет тег script:

<script type="text/javascript" src="http://myserver.com/app.js" />

Внутри этого app.js есть такой код (w / jQuery):

function _run(data) {
  /* load data, modify dom, show content, page shows to user... */
}
$(function() {
  /* load jsonp that will call above function */
  $.getScript("http://myserver.com/data.js");
});

И внутри этого data.js есть материал jsonp:

_run({foo:'bar'});

Думаю, это немного странно, но сейчас мне нужно, чтобы это было так. Дело в том, что он работает на компьютерных браузерах. У меня проблемы с iPhone - если я сделаю его веб-приложением (добавьте его на домашний экран). В первый раз он будет нормально загружаться, если я переключусь на домашний экран и вернусь в веб-приложение, он обновится и загрузится снова просто отлично.

НО , если я подожду около получаса или часа и вернусь к этому веб-приложению - оно не будет загружать контент. Я вижу, что в браузере есть «обновляющая» иконка, вращающаяся на секунду, как будто она обновляет контент, но затем останавливается. Другими словами, похоже, что функция jsonp не выполняется, что, в свою очередь, не загружает страницу. Я не вижу ошибок в консоли Safari.

Я что-то упустил? В браузере iPhone есть что-то особенное? Что-то кешируется странным образом? : [

P.S .: Я знаю, что функция $.getScript добавляет отметку времени в конец URL каждый раз (по крайней мере, в компьютерных браузерах)

UPDATE:

Обнаружена ошибка, связанная с невозможностью найти переменную Google (я включил карты Google с тегом script, затем объявил google var и использовал его). Это происходит ТОЛЬКО после часа бездействия для меня в веб-приложении. И как только я перезагружаю его пару раз, ошибка исчезает (повторяется только через час).

Исправлено это с обратным вызовом (хотя выполнение должно было быть приостановлено до загрузки тега скрипта). Теперь та же ошибка с переменной $ (jQuery).

Очевидно, что с тегами скрипта что-то не так. Сломанный только на мобильном И примерно через час. Понятия не имею, что случилось.

ОБНОВЛЕНИЕ 2:

Итак, в общем, чтобы подвести итог всему вышесказанному, у меня сложилось впечатление, что теги <script> не могут загружаться / запускаться случайно после обновления страницы через полчаса или час спустя. Это происходит на моем старом iPhone 3G под управлением iOS 5.0.1 (замечено, что не имеет значения, веб-приложение или iPhone-сафари). На данный момент я делаю кучу хаков, чтобы проверить и перепроверить, есть ли здесь случайный js ... Полное безобразие. Может ли какой-нибудь гуру js / mobile помочь мне понять, что происходит?

...