2011-08-11 7 views
2

アプリケーションが物理デバイスにデプロイされているため、index.htmlの開始ページはデバイスのストレージに置かれ、このファイルはリモートでホストされているJavaScriptファイルやその他のリソースを参照します。つまり、index.html自体は当社のWebサーバーではホストされていません。このシナリオでは、html5アプリケーションキャッシュを使用できますか?つまり、html要素は次のようになります。html5 appcache:リモートマニフェストファイルは機能しますか?

<html manifest="http://remotehost.com/site.manifest"> 

これはサポートされていますか?または、私たちのWebサーバーがindex.htmlをホストしていない場合、それを動作させるための回避策がありますか?

ありがとうございます!

+0

これに関するニュースはありますか?できないように見えます。あなたはphonegapを使用していますか? – jujule

答えて

4

チェックは、基本的な要件と制限のため、このサイト:

  • Cross-Origin-Policyhttp://appcachefacts.info/

    あなたのファイルがデバイスのストレージに展開されたときに動作するようにappcacheを防ぐことがいくつかありますあなたは、別の起源からマニフェストファイルを参照する - >許可されていません

  • WebKit:私はindex.htmlをレンダリングしているあなたのWebViewがWebKit powered(iOs/Android)であると仮定します。デスクトップPCでSafariとChromeでいくつかのテストを行い、index.htmlがhttp://localhostまたはfile://...のURLから提供されている場合は、マニフェストがクロスオリジンポリシーを尊重していても無視されることに気付きました。ほとんどの場合、デバイス上のローカルに配備されたindex.htmlがfile://...によってサービスされるため、これはあなたに当てはまります。

私はデバイスにマニフェストをダウンロードしてindex.htmlで参照するというアイディアを思いつきました。これは私が(私のセットアップは、PhoneGapの、jQueryMobile、iOSのだった)を固定することができませんでしたいくつかの付加的な問題につながる:

  • Mime-Type:あなたは(デバイスのストレージから提供)マニフェストを添えていることを保証することはできません右のMIMEタイプのヘッダーがあるが、ブラウザがなければ、マニフェストは無視されます。
  • Manifest-URI:このuriを知る前にサーバーからダウンロードして保存する必要があるため、事前定義済みのmanifest="uri/to/appCacheManifest.manifest"属性を持つindex.htmlファイルを(ハードコードで)配布する方法はありません。さらに、PhoneGapアプリケーション(wwwフォルダ)で分散されたアセットを操作して、何らかの方法でアトリビュートを変更することはできません。

これまで、PhoneGap WebViewでマニフェストを使用することができませんでした。私は人々が(iOS)WebViewがマニフェストファイルを扱うことができないと述べた記事を読んだが、これは正しくない。モバイルブラウザでWebアプリケーションに移動してブックマークを保存すると、iOSはこのサイトをWebViewに埋め込みます。私は私のアプリケーション(Webサーバーが提供し、PhoneGapには埋め込まれていない)でこれを試しました。マニフェストは正常に動作しました。

これは、「デバイスのストレージに座っている」ファイルをWebサーバーに移動し、ネイティブのWebViewをその場所を指すように設定すると、マニフェストは正常に動作するはずです。

+1

同様の問題が発生しており、これを解決したかどうかは不思議です。私は、デバイス上のすべての資産を持つPhoneGapアプリを持っています。これらの資産の一部を更新できるようにしたいと思いますが、マニフェストの使用はクロスオリジンのために機能しません。 – speg

+0

私も、@幸運をスプレッド? – Jonathan

関連する問題