Chrome Extension の セキュリティポリシー(CSP)

GoogleのChromeウェブストアチームから Chrome extension に関するアップデートのお知らせが届いていました。

詳細はこちら Manifest Version

記事によると、Chrome機能拡張を作る際はマニフェストに、
'manifest_version': 2:
と書きなさい、とのことです。
そして、これより前の Manifest version 1 は、今後リリース予定のChromeで動作しなくなります。
また、スケジュールに沿ってウェブストアのウォールやカテゴリからも削除されます。

このバージョン1と2の違いについて、上記ページにまとめられていて、
Browser action や Page action の各種プロパティが変更されているようです。
それと、セキュリティポリシー(CSP)の導入に伴って、HTMLとJSの分離が必要です。

CSPの詳しい記事はこちら Content Security Policy (CSP)

例えば “Inline JavaScript will not be executed” について。

<button onclick="clickHandler(this)">

HTML内に上記の記述があっても、デフォルトのポリシーでは動作しません。

この様な場合、HTML内にはボタンを配置しておいて、

<button>Click for awesomeness!</button>

ボタンクリックの処理についてはJS側でイベントリスナを登録します。

document.addEventListener('DOMContentLoaded', function () {
  document.querySelector('button').addEventListener('click', clickHandler);
});

それと “Only local script and and object resources are loaded” の部分。
外部サイトのスクリプトを参照している場合は、デフォルトのポリシーのままでは動作しないので、

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

パッケージ内に組み込む必要があります。

<script src="jquery.min.js"></script>

あるいは “Relaxing the default policy” にあるようにCSPの設定を緩めるなど。
リリース済みパッケージのメンテナンスや今後のリリースの参考まで。