1

現在、外部リソースにロードする HTML5 ゲームを開発しています。現在、XMLHttpRequest を使用してファイルを読み込んでいますが、これは Chrome では機能せず、結果として

XMLHttpRequest cannot load file:///E:/game/data.txt
Cross origin requests are only supported for HTTP.

このファイルは、HTML5 ファイルと同じディレクトリにあります。

質問:

  1. HTML5 アプリケーションが XMLHttpRequest (またはその他の方法) を使用して、外部ファイルを Web サーバーでホストする必要なくロードする方法はありますか?

  2. HTML5 をサポートするタブレット/電話で HTML5 コードをアプリケーションとしてパッケージ化すると、XMLHttpRequest は外部ファイルをロードできますか?

4

1 に答える 1

1
  1. (a) はい、いいえ。セキュリティ ポリシーの問題として、XHR は伝統的に同じプロトコル (つまり、file:/// ではなく http://) であり、さらに、伝統的に同じドメインでもありました (同じサブドメイン内 --http://pages.site.com/indexからファイルを取得できませんhttp://scripts.site.com/)。クロスドメイン リクエストが利用可能になりましたが、ウェブサーバーが必要であり、ファイルをホストするサーバーはリクエストを明確に受け入れる必要があります。

    (b) したがって、回りくどい方法で言えば、答えはイエスです。ページが http 要求 (古いバージョンのブラウザー)... ...しかし、それ以外の場合は、何らかの Web サーバーが必要になります。良いニュースは、それらが非常に簡単にインストールできることです。EasyPHP で十分で、ほぼ 3 クリックのソリューションです。他にも数え切れないほどあります。必要なのはApacheのファイルサーバーだけで、サーバー側のスクリプト言語を使用する予定がない場合(または使用する予定がある場合)、ブレインオフインストールに関して最初に思い浮かぶのはこれだけですPHP)。

  2. XMLHttpRequest は絶対に外部ファイルを取得できます...
    それらが実際に外部である場合(つまり、電話固有のキャッシュにバンドルされていない場合-そのために電話の組み込みファイルアクセス API を使用し、処理するラッパーを記述します)それぞれが同じカスタム インターフェイスを備えている)、および電話が現在受信している -- 障害条件を処理する準備ができている (デフォルト設定オブジェクトを持っている、エラー処理を持っている、または何が最善のケースであるかなど)ない)。

    また、Application Cache Manifests も調べてください。繰り返しますが、これは html5 ソリューションであり、携帯電話のバージョンによって処理が異なります (初期のフォーマットとより標準化されたフォーマット)。 開発中は使用しないでください。コード/コンテンツの変更のテストが非常に遅くて苦痛になるためです。ただし、製品がほぼ完成し、バグがなく、起動から数秒後に、ユーザーのブラウザーにすべてをキャッシュするように指示する場合に役立ちます。コンテンツを永遠に保存できるため、オフラインでプレイでき、あらゆる種類の帯域幅を節約でき、次回プレイするときにすべてをダウンロードする必要がなくなります。

于 2012-08-27T05:10:26.000 に答える