【发布时间】:2012-08-21 08:55:44
【问题描述】:
使用 Chrome Web Store 内联安装 (https://developers.google.com/chrome/web-store/docs/inline_installation) 可以为 chrome.webstore.install() 指定一个回调,该回调将在成功安装扩展程序时执行。
通过一些非常繁琐的调试,我了解到在执行回调时不一定 100% 安装扩展 - 可能尚未加载背景或内容脚本尚不可用。
在我的特殊情况下,问题以这种方式出现:
- 用户单击安装按钮,
chrome.webstore.install()绑定到onclick事件。 - 成功回调注入 iFrame。
- 为 iFrame 定义内容脚本并注入以完成一些收尾工作
- 内容脚本返回一个完整的安装对话框。
第 3 步是问题所在。有时 iFrame 会在内容脚本完全加载之前被注入,因此不会注入任何脚本(内容脚本只会注入到新创建的 iFrame 中,而不是在安装/启用扩展程序时已经存在的 iFrame)。
我知道有可能的解决方法,例如让扩展程序本身注入 iFrame 或简单的setTimeout(),但为了帮助其他人,我认为值得提出这个问题:
当chrome.webstore.install() 回调不能确保扩展时,我如何确定扩展已 100% 安装?
使用Checking if user has a certain extension installed 中描述的著名的<img> 加载方法不能可靠地工作(对于那些认为这是一个解决方案的人)。
【问题讨论】:
标签: javascript google-chrome google-chrome-extension