4

HTML5 CanvasとJavascriptを使用してゲームを構築しており、レベルにJSON形式のタイルマップを使用しています。タイルはFireFoxで正しくレンダリングされますが、Chromeを使用すると、JSONフェッチが失敗し、「OriginnullはAccess-Control-Allow-Originで許可されていません」と表示されます。jQueryの$.ajaxコマンドを使用していましたが、すべてのファイルが1つのディレクトリにあります。

この投稿のソリューションを使用しますが、Webサーバーソリューションを使用できません。

解析および読み取り対象のJSONファイルをフェッチする他の方法はありますか?URLを指定するだけで画像を読み込むのと似ていますか?または、JSONファイルをグローバルに利用可能な文字列にすばやく変換してJSON.parse()で解析できるようにする方法はありますか?

4

2 に答える 2

1

Chrome で有効なオプションの 1 つは、コマンド ライン スイッチを使用してブラウザを起動することです--allow-file-access-from-files。この質問は問題に対処します: Google Chrome --allow-file-access-from-files disabled for Chrome Beta 8

もう 1 つの可能性は、グローバル変数を JSON 値に設定して、JSON データをスクリプトとして取得することです。

于 2012-10-21T06:41:25.780 に答える
1

ローカル Web サーバーがオプションではないのはなぜですか? Apache は無料で、何にでもインストールでき、使いやすいです。また、特にChromeの場合は、調べてください--allow-file-access-from-files

しかし、他にscriptも機能しない場合は、タグ内のファイルへのリンクを追加var SomeGlobalObject = ...して、各ファイルの先頭に追加することもできます。JS を使用して script タグを に追加することで、これを動的に実行できる場合もありますhead。しかし、最終的には、AJAX を使用する代わりに、次のことができます。JSON.parse(SomeGlobalObject)

つまり、script タグを追加して、ファイルをグローバル名前空間にロードします。通常、これは悪い習慣と見なされますが、テストのためにのみ使用され、他のオプションがない場合は機能する可能性があります。

于 2012-10-21T06:43:07.327 に答える