Hatena::Grouporera

もし高校野球の女子マネージャーがOpera Browserを使ったら

logo
 | 

2011-04-18

はてなブックマークの Google Chrome 拡張機能を Opera に移植しました

01:21

Google Chrome の Extension API と Opera のものは非常に似ているので、Opera でも出来るんじゃないかと思って移植してみたら案外あっさり出来てしまいました。

とりあえずベータ版として公開します。

この前出た Opera 11.10 以上でないと動きません。それから、今後 Opera のアップデートで使えなくなる可能性は十分あります。

インストールするときに↓のようなダイアログが出たら、チェックボックスにチェックを入れたほうがいいかもしれません。入れないとアップデートの度に同じダイアログが出ます。

f:id:edvakf:20110419004617p:image:w600

Chrome 版と最も大きく異なる点は、ブラウザでログインしていても Extension のほうでは自動的にログインしないというところです。そのため、Chrome の場合は↓の画面で「こちらからログイン」を押すとログインウィンドウが開きますが、Opera の場合は「こちらからログイン」を押すとログインフォームを出すようにしました。(どちらが Opera でしょうか、という問題ではありません笑)

f:id:edvakf:20110419005753p:image:h400 f:id:edvakf:20110419005600p:image:h400


技術的な話

Opera 11.10 から、Extension のポップアップやオプション画面から opera.extension.bgProcess でバックグラウンドページのコンテクストが取得できるようになりました。(それまでは opera.extension.postMessage で非同期通信しなければいけなかった)

これが Chrome の chrome.extension.getBackgroundPage() に相当するため、処理を大幅に書き直すこと無く Opera に移植することができました。元々あるファイルにはほとんど手を付けてなくて、chrome オブジェクトを Opera 用に定義するファイルを作ったぐらいです。

Opera のタブやウィンドウ関連の API はほぼ Chrome のパクリみたいなもんなのですが、API がそろってない*1のでそこら辺は未実装にしてあります。たぶん関係なく動くと思います。

あと WebSQLDatabase はそのまま使えるのでラクですね。EijiroX のときもそのへんのコードはそのままでした。

ソースはここに置いてあります。

*1Opera の API ガイドにも IMPORTANT: Please note that Opera extensions Windows and Tabs functionalities are currently incomplete, and undergoing an intensive overhaul. At the moment, we would advise against using it. Please wait until we have completed the update, or use it at your own risk. とあるし

トラックバック - http://orera.g.hatena.ne.jp/edvakf/20110418
 |