1

このドキュメントに従って manifest_version を「2」にアップグレードしたところ、chrome が次のようなエラーを発生させていることに驚きました。

次のコンテンツ セキュリティ ポリシー ディレクティブに違反しているため、インライン スクリプトの実行を拒否しました

彼らがこれを行う理由は明らかですが、モジュールのロード進行イベントをどのように管理する必要があるかはわかりません。最新の(dev)ペッパーリリースにラチェットしても、ドキュメントではインラインスクリプトを推奨しています(明らかに機能しません)。

このバージョンが反転し、私のものが完全に無効になるのを見て、私は少しイライラしています (週末の午後に進行中のモジュール ロードのコーディングを行った後)。

ですから、ええ...それはより大きな利益のためです。理解します。<embed/>しかし、今では、イベントを正しくキャッチするために、スタンドアロンの JavaScript ファイル (独自のロード パラダイムを持つ) を用意し、時間内に要素に接続する必要がありますか? これを行うための新しく改善された方法は何ですか?

この認可されたボイラープレートに代わる信頼できる代替案を誰か提案できますか?

4

1 に答える 1

3

NaCl プログレス イベントのドキュメントによると、次のようにイベント リスナーを追加する必要があります。

<div id="listener">
  <script type="text/javascript">
    document.getElementById('listener').addEventListener('load', function() {
        // Example
    }, true);
  </script>
  <embed name="nacl_module" ... type="application/x-nacl" />
</div>

これは、コンテンツ セキュリティ ポリシーで禁止されている場合です (も参照)。それを解決する唯一の方法があります: スクリプトを外部ファイルに移動することによって:

<div id="listener">
  <script src="listener-load.js"></script>
  <embed name="nacl_module" ... type="application/x-nacl" />
</div>

// listener-load.js:
document.getElementById('listener').addEventListener('load', ..., true);

<embed>DOM の構築は外部ファイルが読み込まれるまでブロックされるため、タグが挿入される前にスクリプトが読み込まれます。外部ファイルは拡張機能とともにパッケージ化されるため、パフォーマンスへの影響は無視できます。

于 2012-08-04T21:31:38.363 に答える