2

特定の方法で設計された webapp があります。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 で問題が発生しています - Web アプリケーションにすると (ホーム画面に追加します)。初めて問題なくロードされますが、ホームスクリーンに切り替えて webapp に戻ると、更新されて再び問題なくロードされます。

しかし、約30分または1時間待ってからそのWebアプリケーションに戻ると、コンテンツが読み込まれません。ブラウザがコンテンツを再取得しているかのように、「更新」アイコンが 1 秒間回転していることがわかりますが、その後停止します。つまり、jsonp 関数が実行されていないように見えます。つまり、ページが読み込まれません。Safari コンソールにエラーは表示されません。

何か不足していますか?iPhone ブラウザには何か特別なものがありますか? 何かが奇妙な方法でキャッシュされていますか? :[

PS:関数が毎回URLの最後にタイムスタンプを追加することを知ってい$.getScriptます(少なくともコンピューターブラウザーでは)

アップデート:

Google変数が見つからないというエラーが発生していることがわかりました(スクリプトタグでGoogleマップを含め、Google変数を宣言して使用しています)。これは、webapp で約 1 時間非アクティブになった後にのみ発生します。そして、数回再起動すると、エラーは消えます(1時間後に再び発生するだけです)。

コールバックでそれを修正しました (スクリプト タグがダウンロードされるまで実行を一時停止する必要がありましたが)。$変数(jQuery)で同じエラーが発生しました。

明らかにスクリプトタグに問題があるようです。モバイルでのみ壊れ、約 1 時間後に壊れました。何が起きているのかわからない。

更新 2:

したがって、基本的に上記のすべてを要約すると<script>、30 分または 1 時間後にページを更新した後、タグのダウンロード/実行がランダムに失敗するという印象を受けます。これは、iOS 5.0.1 を実行している私の古い iPhone 3G で発生します (Web アプリケーションか iPhone Safari かは問題ではありません)。今のところ、ランダムなjsが存在するかどうかを確認して再確認するために、たくさんのハックを行っています...総醜さ。何が起こっているのかを理解するのに役立つ js/mobile の第一人者はいますか?

4

0 に答える 0