29

HTML5 とキャンバスを使用するソフトウェアを作成する必要があります。

サーバーを必要とせずに、ソフトウェア全体をローカルで実行できる必要があります。したがって、私はJavascriptのみを使用でき、phpは使用できません。

難しい部分: 操作中に必要なテキスト ファイルのコンテンツを動的に取得する必要があります。

例: ソフトウェアが起動したら、「config.json」が必要です。ユーザーがいくつかの決定を下した後、「story1.txt」または「story2.txt」などが必要になります。

私の問題:

Chrome が Ajax をブロックしているため、Ajax を使用できません。ローカル ファイルは他のファイルのコンテンツを取得できません。私はいつもエラーメッセージを受け取ります。

私がこれまでに試したこと:

  • Ajax と jQuery を使用してファイルを読み込む

    Chrome でファイルを読み込めません

  • ファイルを script-Tag にロードする

    JSON-File を js-Code として宣言しても、読み込まれた File の内容にアクセスできません

  • 非表示の Iframe にファイルをロードし、そのコンテンツを読み取ります

    ロードが機能し、コードが表示されます。しかし、IFrame のコンテンツにアクセスしようとすると、Chrome のエラー メッセージが再び表示されます。

    "Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match."
    

質問:

Textfile を動的にロードする方法はありますか、それとも Web サーバーを使用する必要がありますか?

4

8 に答える 8

2

あなたが説明していること (および提案された解決策)は、ブラウザのセキュリティを著しく 損なうものです。

サーバーを必要とせずにローカルで実行できる必要があります

では、ソフトウェアはどのようにしてマシンに搭載されるのでしょうか? DVD を郵送する予定がない限り、マニフェスト ベースのキャッシュ(Chrome、MSIEFirefoxなど、最新のすべてのブラウザーでサポートされています)を使用して、ソフトウェアの展開を HTML5 アプリとして行うことができます。これが対応していないのは、データを通常のファイルとして保存することですが、データをローカル ストレージに保存することはできます。

于 2014-11-08T00:51:56.853 に答える
2

AJAXを使用せずにローカル ファイルを Chrome ブラウザにローカルで読み込むことができます。通常、 $.getJSON()などのjQuery関数を使用して、 Chromeブラウザにファイルをロードできます。

ただし、この jQuery 機能を使用すると、 Chrome Web セキュリティによって、ファイル フォームファイル パッケージにアクセスする機能がブロックされます。Firefox ブラウザーでは完全に動作しますが、要件が chrome ブラウザーである場合は、コマンド ラインを使用して Chromium フラグを設定する必要があります。

ローカル システムからデータ ファイルにアクセスするのに役立ついくつかの追加機能を有効にする Chromium フラグを設定するためのいくつかの手順を次に示します。これらは:-

  1. 実行中のクロムのインスタンスを終了または閉じます。
  2. chromeを起動するために通常使用するショートカットを見つけます。
  3. そのコピーを作成します。
  4. 新しいショートカットを右クリックし、 [プロパティ]を選択します。
  5. Target: テキスト ボックスの最後に、スペースを追加してから、目的のコマンド ライン フラグを追加します。「C:\Program Files (x86)\Google\Chrome\Application\chrome.exe」 --allow-file-access-from-files --disable-web-security のようになります
  6. 「適用」ボタンをクリックしてから「OK」をクリックします。
  7. 新しいショートカットをダブルクリックして、新しいコマンド ライン フラグで chrome を起動します。

注:フラグは、このクロム アイコンに対してのみ設定されていることを覚えておいてください。このクロムアイコンでアプリケーションを起動してください。

于 2015-08-26T08:32:08.913 に答える