javascript - 如何检查 Chrome 扩展程序是否已完全安装

标签 javascript google-chrome google-chrome-extension

使用 Chrome 网上应用店内联安装 ( https://developers.google.com/chrome/web-store/docs/inline_installation ) 可以为 chrome.webstore.install() 指定回调将在成功安装扩展时执行。

通过一些非常繁琐的调试,我了解到当执行回调时,扩展不一定 100% 安装 - 可能后台尚未加载或内容脚本尚不可用。

在我的特殊情况下,问题以这种方式出现:

  1. 用户点击安装按钮 chrome.webstore.install()绑定(bind)到 onclick事件。
  2. 成功回调注入(inject) iFrame。
  3. 为 iFrame 定义内容脚本并注入(inject)以完成一些收尾工作
  4. 内容脚本返回一个已完成的安装对话框。

第 3 步是问题所在。有时会在内容脚本完全加载之前注入(inject) iFrame,因此不会注入(inject)任何脚本(内容脚本仅注入(inject)新创建的 iFrame,而不是在安装/启用扩展时已经存在的 iFrame)。

我知道有可能的解决方法,例如让扩展本身注入(inject) iFrame 或简单的 setTimeout() , 但为了帮助他人,我认为值得问这个问题:

chrome.webstore.install() 时,我如何确定扩展已 100% 安装?回调不能保证吗?

使用著名的 <img> Checking if user has a certain extension installed中描述的加载方法不能可靠地工作(对于那些认为这是解决方案的人)。

最佳答案

这是实现它的方法:

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

或者您可以按照这篇文章中的内容进行操作:

Check whether user has a Chrome extension installed

我还看到解决方案谈论后台页面和本地存储:

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

Chrome extension post-install hook/API function: does it exist?

关于javascript - 如何检查 Chrome 扩展程序是否已完全安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051366/

相关文章:

javascript - 如何创建 JavaScript 回调以了解何时加载图像?

javascript - 了解 $.promise 的工作方式类似于 transitionEnd

javascript - jQuery Mobile - 如何从服务器调整我的图像大小以适应 ListView 图像框

google-chrome - 检查 WebGL 扩展支持?

javascript - jquery html() 不适用于 Chrome 中的定位元素

google-chrome-extension - 了解 Chrome 应用导航

javascript - 过滤对象数组的性能

css - Chrome 在 <picture> HTML5 中加载 2 张图片

google-chrome - 如何使Chrome扩展程序PageAction图标出现在地址栏中?

javascript - 无法使用 chrome.storage.local.set 保存集