Hatena::ブログ(Diary)

カストリブログ

2009-12-30

Chrome Extention作成時に個人的に詰まった所と対策

| 03:12

Extentionのアップロード時に「An error occurred: please try again later.」というエラーメッセージが出る

知らないうちに、Googleのログイン状態が解除されたことが原因。また、Googleにログインしてから、アップをやり直す。


Extentionをアップロードすると「Pending」という状態になる。そして、アップロードはできるが、Extentionのページからインストールをしても古いバージョンのままになる

 作成したExtentionにローカルファイルへのアクセス権限を与えた(manifest.jsonで、permissionsにfile:/*/*がある)ことが原因。

 現状では、ローカルファイルへのアクセスを行うExtentionは、人手で悪質なプログラムでないかを判断した後に配布を許可する模様。どうしても必要というわけでないなら、ローカルファイルへのアクセス権限をExtentionに与えない。


Background PageからExtentionのポップアップを開く方法について

 現状、その方法はない。そのうち、用意してくれるっぽい。


chrome.tabs.updateやchrome.tabs.executeScriptを呼ぶとクラッシュする

 prototype.jsをソースにインクルードしていることが原因かも。prototype.jsを利用しないで実装する。(クラッシュ時に特にエラーメッセージもでないので、3時間くらいクラッシュ原因が分からず苦労した。)


ContentScriptからBackgroundPageへメッセージを送るメッソドchrome .tabs .sendRequestに対する返信用コールバック関数を呼び出しても、エラーメッセージは出ないが動作しない

 返信用コールバック関数の引数に、DOMオブジェクトなどを渡すとこうなる。返信用コールバック関数の引数には、JSONオブジェトしか渡せないので、引数をJSON形式にする。

Connection: close