tech::hexagram

personal note for technical issue.

Chrome Extensionのmanifest.jsonを1から2へアップデートした際の仕様変更まとめ

しばらくぶりにchrome extensionの開発をしていたら、extensionの仕様をコントロールするmanifest.jsonのバージョンが上がっていたらしく、jsonを含め、次のような変更が必要になったようです。

バージョンアップしたmanifest.json周りの仕様はgoogle謹製ドキュメントを参考にして欲しいです。
Manifest File Format - Google Chrome

manifest.json

"manifest_version" : 2の宣言

新しいmanifest.jsonでは、以下の宣言が必須となります。

 "manifest_version": 2,
background_pageの設定方法

以下のように変更となります。

#変更前
"background_page":"bg.html",
#変更後
"background": {
    "page":"bg.html"
},

jsのstrict化?

1年弱前に書いたコードは、何を思っていたのか、headの中にscriptベタ書きの状態で記されており、到底使えるものではありませんでした…
新しいmanifest.jsonではこのような書き方では動かなくなります。

例えば、options.html内で以下のように書いていたものが次のようなエラーで落ちます。

<body onload="loadOptions();">
Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:".

あまりにも残念だったので、まずjQuery化し、その後にhtmlから分離したjs内で以下のように記述。

$(document).ready(function(){
    loadOptions();
});

久しぶりにextensionを開発 or アップデートしようと思った際は注意してください。