Chromeウェブストアのインラインインストール(https://developers.google.com/chrome/web-store/docs/inline_installationchrome.webstore.install()
)を使用すると、拡張機能が正常にインストールされたときに実行されるコールバックを指定できます。
非常に面倒なデバッグを通じて、コールバックの実行時に拡張機能が必ずしも100%インストールされていないことを学びました。バックグラウンドがロードされていないか、コンテンツスクリプトがまだ利用できない可能性があります。
私の特定のケースでは、問題は次のように現れます。
chrome.webstore.install()
ユーザーは、イベントにバインドされたインストールボタンをクリックしますonclick
。- 成功コールバックはiFrameを挿入します。
- コンテンツスクリプトはiFrame用に定義され、仕上げ作業を行うために挿入されます
- コンテンツスクリプトは、インストールダイアログが完了した状態で戻ります。
ステップ3が問題です。コンテンツスクリプトが完全に読み込まれる前にiFrameが挿入されるため、スクリプトが挿入されない場合があります(コンテンツスクリプトは、拡張機能のインストール/有効化時にすでに存在するiFrameではなく、新しく作成されたiFrame内にのみ挿入されます)。
拡張機能自体にiFrameを挿入したり、単純なものにするなどの回避策があることは知っていますがsetTimeout()
、他の人を助けるために、質問する価値があると思います。
chrome.webstore.install()
コールバックで確実に拡張機能がインストールされていない場合、拡張機能が100%インストールされていることをどのように確認できますか?
ユーザーが特定の拡張機能をインストールしているかどうかの確認で説明されている有名な<img>
読み込み方法を使用しても、確実に機能しません(解決策になると考えている人にとって)。