読者です 読者をやめる 読者になる 読者になる

まめ畑

ゆるゆると書いていきます

Jetpackのちょっとしたメモ

Jetpack javascript

つい先日公開されたばかりと思ったらVer0.1.5までどんどん更新されているJetpackですが、「Jetpack Enhancement Proposal」なるものまで提案されているようです。
公式ページ: Labs/Jetpack/JEP - MozillaWiki
これは新しいAPIの候補について、コミュニティの意見などを集約して掲載しています。
現状では制限が多いですが、次期バージョンではもっとFxを制御出来るようにAPIが追加される事を期待します。

Jetpack Featureについていくつかメモ

var cWindow =  jetpack.tabs.focused.contentWindow;   //○
var cWindow =  Jetpack.tabs.focused.contentWindow;   //×

Jetpac本体内で使用している名前空間と被っているという警告がでます。
問題なく動きますが。

  • Jetpack Featureの更新確認は1時間毎

jetpack-runtime.js内に

FEED_UPDATE_INTERVAL: 60 * 60 * 1000

と書かれています。
拡張は内部ではFeedと呼ばれているようです。
1時間毎にインストール済みのJetpack Featureを確認しています。

更新はどうやって確認しているか見てみました。
165行目付近

_getRemoteFeed: function _getRemoteFeed(feed) {
var self = this;
return jQuery.ajax(
  {url: feed.srcUri.spec,
   timeout: self.FEED_UPDATE_REMOTE_TIMEOUT,
   dataType: "text",
   complete: function(xhr, textStatus) {
     if (feed.uri.spec in self._feedUpdates)
       delete self._feedUpdates[feed.uri.spec];
   },
   error: function(xhr, textStatus, errorThrown) {
     // TODO: Log the error?
   },
   success: function(data) {
     var currCode = feed.getCode();
     if (currCode != data) {
       feed.setCode(data);
       feed.broadcastChangeEvent();
     }
   }});
},

1つずつJetpackを取得しているのですが、178行目のsuccess内の処理は、取得してきたJSをSQLite内に保存されている現在のコードと単純に!=で比較して違ったら保存しなおすという処理ですね。
If-Modified-Sinceは使っていないようですね。
JQueryの中で最終更新時間を保存しているので、Jetpack Featureが再読込みされたりすると消えてしまうためかと思います。
JQueryを使わずに、XMLHttpRequestを使って、最終更新時間をコードと一緒に保存する方法もあると思いましたが、Jetpack Featureのサイズから考えるとそこまでする必要は無いのかな。

  • Firebug1.4との連携がうまくいかない

改善されるのを待ちます。Updateしなければ問題ないです。