2012年7月23日月曜日

Chrome拡張機能のマニフェストVesrsion2対応についてのメモ


2年前くらいに作成したChrome拡張機能(Last Tab Keeper)のManifest Version 2対応を行いました。
もともと自分が欲しくて作ったものですが、いつの間にか2千人近い方に使って頂きありがとうございます。
何か機能追加を行った訳ではありませんが、これをやらないと2013年第3四半期には使えなくなってしまう との事でしたので、
アップデートを行いました。その時の内容を少しメモしておきます。

【manifest.jsonの変更】

・まず下記のプロパティの追加が必要
  "manifest_version": 2

・"background_page"プロパティが"background"に名前変更され、記述方法が変更されています
  v1はhtmlのscriptタグでjsを読み込んでいましたが、v2からjsを直接読み込むよう指定できます。
// マニフェストv1の記述
"background_page": "background.html",

// マニフェストv2の記述
"background": {
  "scripts": ["background.js"]
},
【新しいセキュリティポリシー(CSP)への対応】
インラインのJavascriptの実行ができなくなりました。下記のような対応が必要になります。
(もともとViewとロジックを分離するようにコード書いている人は最初の2つは別段対応いらないかもしれません・・・)

・htmlファイル内にjavascriptを含めることができませんので、別ファイルに分けてscriptタグで読み込む必要があります。

・イベントハンドラ(onloadとかonclick)もhtml上には記述できません。例えば下記のようにjsファイルで動的に追加します。
// 動的にイベントハンドラを追加
document.addEventListener('DOMContentLoaded', function () {
  // 1. bodyのonloadで行っていた初期化コードなどをここに書く

  // 2. イベントハンドラの登録をする
  document.querySelector('button').addEventListener('click', save_options);
});
・スクリプトやリソースは同梱しないといけなくなりました。(ネット上からjQueryなどのライブラリを読み込んではいけない)

※かなりシンプルな拡張機能ですので上記対応で済みましたが、これ以外にも影響あるかと思います。
複雑なものをお作りの方はそれなりの変更工数かかるのでは?という印象でした。
ちなみにストアの方は特に変更無いみたいで、今までと同じ方法でアップロードできました。

 【参考サイト】
[公式]
Manifest Version // 以降スケジュールや差分などについて
Formats: Manifest Files // マニフェストファイルの詳細
Content Security Policy (CSP) // 一番影響のあるセキュリティポリシーの詳細について

[その他]
Chrome Tech Talk Night #3 行ったので拡張機能の内容をまとめてみる
↑日本語情報があまり無い中、とても参考になりました

0 件のコメント:

コメントを投稿