8

Chromeウェブストアのインラインインストール(https://developers.google.com/chrome/web-store/docs/inline_installationchrome.webstore.install() )を使用すると、拡張機能が正常にインストールされたときに実行されるコールバックを指定できます。

非常に面倒なデバッグを通じて、コールバックの実行時に拡張機能が必ずしも100%インストールされていないことを学びました。バックグラウンドがロードされていないか、コンテンツスクリプトがまだ利用できない可能性があります。

私の特定のケースでは、問題は次のように現れます。

  1. chrome.webstore.install()ユーザーは、イベントにバインドされたインストールボタンをクリックしますonclick
  2. 成功コールバックはiFrameを挿入します。
  3. コンテンツスクリプトはiFrame用に定義され、仕上げ作業を行うために挿入されます
  4. コンテンツスクリプトは、インストールダイアログが完了した状態で戻ります。

ステップ3が問題です。コンテンツスクリプトが完全に読み込まれる前にiFrameが挿入されるため、スクリプトが挿入されない場合があります(コンテンツスクリプトは、拡張機能のインストール/有効化時にすでに存在するiFrameではなく、新しく作成されたiFrame内にのみ挿入されます)。

拡張機能自体にiFrameを挿入したり、単純なものにするなどの回避策があることは知っていますがsetTimeout()、他の人を助けるために、質問する価値があると思います。

chrome.webstore.install()コールバックで確実に拡張機能がインストールされていない場合、拡張機能が100%インストールされていることをどのように確認できますか?

ユーザーが特定の拡張機能をインストールしているかどうかの確認で説明されている有名な<img>読み込み方法を使用しても、確実に機能しません(解決策になると考えている人にとって)。

4

2 に答える 2

8

これはそれを行う方法です:

http://code.google.com/chrome/extensions/extension.html#global-events

以下の最後のリンクで述べたように、次のことができるはずです。

var myPort=chrome.extension.connect('yourextensionid_qwerqweroijwefoijwef', some_object_to_send_on_connect);

次のリンクの項目が既にインストールされているかどうかの確認セクションを確認することもできます。

https://developers.google.com/chrome/web-store/docs/inline_installation

または、この投稿で行われたことに従うことができます。

ユーザーが Chrome 拡張機能をインストールしているかどうかを確認する

バックグラウンドページとローカルストレージについて話しているソリューションも見ました:

http://developer.chrome.com/extensions/background_pages.html

Chrome 拡張機能のポスト インストール フック/API 関数: 存在しますか?

于 2012-12-18T22:43:35.187 に答える
0

コンテンツ スクリプトの作業は、ユーザーが拡張機能をインストールしたのと同じページから実行する必要がありますか? そうでない場合は、拡張機能を呼び出すchrome.tabs.updatechrome.tabs.create(tabsタブのアクセス許可を必要としないいくつかの方法のうちの 2 つ)、コンテンツ スクリプトを挿入できるページを開くだけです。

それ以外の場合、拡張機能はプログラム インジェクションを使用して、ページと通信できるコンテンツ スクリプトを挿入できます。chrome.tabs.query正しいタブに注入していることを確認するために使用できます。

于 2012-12-17T03:33:06.243 に答える