2011-09-15 11 views
1

私はフルスクリーンモードと飛行機モードで同時に必要なiPadウェブアプリケーションを開発中です。iPadフルスクリーンモード&飛行機モード

キャッシュマニフェストを使用して必要なすべてのファイルを保存しましたが、難しい部分はURL ie. file.html?account=234の情報を渡しています。このようなファイルに飛行機モードでリンクしようとするとfile.htmlがキャッシュマニフェストにキャッシュされているにもかかわらず、iPadがドメインにアクセスできないというエラーが返されます。

iPadはfile.htmlfile.html?account=234が完全に異なる2つのファイル/ URLだと思うので、キャッシュマニフェストにはないことがわかり、サーバーに接続しようとします。

このすべての背後にある考え方は、我々はJSONファイルからindex.htmlにアカウントのリストを表示してfile.htmlで(私たちはjQuery $.url().param()プラグインを使用してaccountのparamを取得)し、JSONファイルからアカウント情報を構築することです。

これは、JSONファイルをデータベースとして使用するローファイのようなもので、フルスクリーンモードで正常に機能します。飛行機モードでない限り。このプロトタイプはインターネット接続なしで動作する必要があるため、これは問題です。

私のアプローチは完全に間違っているようですが、今は一種の損失です。 file.htmlindex.htmlにロードし、同時にaccount=234を渡すためにAJAXを使用する方法はありますか?

+0

一般に、キャッシュに関する限り、file.htmlとfile.html?param = valは異なるページです。 – jasonbar

答えて

-1

Safariは、すべてのブラウザと同様に、クエリー文字列でURLをキャッシュしません。この事実は、クエリーストリングを追加してAJAX呼び出しを強制的にリフレッシュさせるために常に使用されます。

最も簡単なレベルでは、代わりに/account-234/のようにURLのコンポーネント部分を使用するように切り替えてみてください。

あなたが言ったように、あなたのアプローチは単に意味をなさないかもしれません。 HTML5 local storageを見ましたか?関連するすべての情報を、あなたにとって意味のあるデータ構造にプルダウンし、オフラインで使用するために保管することができます。

+1

それが正しいかどうかわかりません。古いブラウザはそうではありませんでしたが、現代のブラウザはすべて知っています。また、すべてのユーザーに対して動的マニフェストを作成しない限り、ソリューションはマニフェストでは機能しません。 – Gerben

+0

@Gerben私はあなたが間違っていると思います。 URLのコンポーネント部分を使用するか、クエリ文字列をパラメータとして使用するかの違いはありません。クエリーストリングパラメータを使用して、AJAX呼び出しを行うときにブラウザを常に「トリック」するようにするのは、一般的な手法です。 –

+0

しかし、依然としてマニフェストにURLを追加する必要があります。クエリー文字列またはパスコード化されたアカウント番号が必要です。 – Gerben

1

file.html?account = 234とfile.htmlは2つの異なるURLです。アカウント番号をパラメータとしてではなく、ハッシュ(#)で追加することができます。しかし、クッキーやローカルストアにアカウント番号を保存した方がいいと思います。

+0

querystringのファイルが既に訪問されていても、通常の状況では、それを再度プルしようとすると、クエリーストリングがあるためにサーバーに戻ります。 –

+0

@rex http://stackoverflow.com/questions/850187/caching-from-urls-with-a-query-string – Gerben

0

わかりましたので、私はlocalStorageが完璧なソリューションであることを報告してうれしいです。私はちょうど "アカウント"、 "234"としてキー/値を保存しました。

関連する問題