Jetpack Featureを作るときのもろもろ
Jetpack Featureについて2つほど聞かれたのでメモ。
1つ目は、Featuerに外部のコードをロードする方法。これはFeature中で外部ライブラリを使用する時に便利だと思うのですが、現状だと綺麗にロードする方法が無いです。探したところ、少し前にフォーラムで話されていたのですが、statusBar Panel中にコードをロードして使用する方法と、$.getを使用してコードをロードし、evalする方法が提案されていました。外部スクリプトのロードを行う機構の準備も行われていると書かれているので、実装待です(閲覧中のページに外部スクリプトをロードして適用するAPIはJEP19)
ちなみに、statusBarの方法だとあまりうまくいかなかったです…
jetpack.statusBar.append({ html: 'TEST', onReady: function(widget){ $(widget).click(function(){ $.get('http://hoge.com/fuga.js', function(res) { eval(res); testMethod(); //fuga.js中の関数 }); }); } });
この様な感じになると思いますが、これだとクリック毎にコードがロードされるので、storage APIなどを使って一回だけロードさせる方法にするなどした方がいいと思います。しかし、綺麗ではないですね。他に方法があれば教えて頂けると嬉しいです。
2つ目は、settings APIを使用している場合に、Feature中でsettingsの内容を動的に書き換えられるかというものですが、もちろん書き換え可能です。パスワードに設定されているものでも、代入してしまえば変更されます。
なので、もし設定ページで入力された情報を使用した際にエラーをキャッチしたら、変更するプロンプトを出したりなんなりして設定情報の変更が可能です。
あと、JEPが3つ追加されました。
- JEP34 Notification Boxes(https://wiki.mozilla.org/Labs/Jetpack/JEP/34)
- JEP35 Localization API(https://wiki.mozilla.org/Labs/Jetpack/JEP/35)
- JEP36 L10n environment(https://wiki.mozilla.org/Labs/Jetpack/JEP/36)
国際化対応が気になります。