jQuery 1.10.2 と jQuery Mobile 1.3.2 を使用して、次の単純な html で chrome パッケージ化されたアプリを作成しようとしています...
<!DOCTYPE html>
<html>
<body>
<div data-role="page">
<script async src="events.js" type="text/javascript"></script>
</div>
</body>
</html>
2 つの問題があります。1 つ目は、jQuery が events.js をロードするスクリプト タグをインターセプトし、xhr.open( s.type, s.url, s.async ); を呼び出すことです。ただし、s.async は false です。Chrome でパッケージ化されたアプリでは、同期読み込みが許可されていません。したがって、jQuery のこの行の前に、s.async = true; を設定します。
次の問題は、jquery が最初のドキュメント挿入時に各スクリプトで globalEval メソッドを呼び出し、これが eval を呼び出して、chrome パッケージ アプリでこの CSP エラーを生成することです。
Uncaught EvalError: 'unsafe-eval' は次のコンテンツ セキュリティ ポリシー ディレクティブで許可されているスクリプトのソースではないため、文字列を JavaScript として評価することを拒否しました: "default-src 'self' chrome-extension-resource:".
1 つの解決策はサンドボックス化 (マニフェストに html ページを追加) かもしれませんが、これは別の問題を引き起こします: XMLHttpRequest は chrome-extension://ocnbknafegfhcgbiciegbfndjckamkoj/events.html を読み込めません。Origin null は、Access-Control-Allow-Origin では許可されていません。サーバーには「Access-Control-Allow-Origin」、「*」があるため、このエラーは予想されません。
では、最初の同期エラーは jquery の問題ですか? 2番目の問題もjquery/chromeパッケージアプリの不一致ですか? CSP の回避策はありますか? サンドボックス化してページ間のナビゲーションを許可する方法はありますか?