如何刷新/重新加载Chrome扩展程序?

我正在开发Chrome 4中的扩展程序(当前为4.0.249.0),它将在状态栏中显示用户的StackOverflow / SuperUser / ServerFault信誉。 我设计了一个选项页面以获取用户的配置文件ID,并将它们保存到localStorage并在扩展中很好地读取它们。 这一切都很好。
问题是我找不到(程序化)的方式来刷新选项保存的扩展名。 我试着调用location.reload(); 从扩展页面本身点击右键 - 无济于事。 我进一步追求它,并试图查看Chrome的chrome://extensions/ page用于重新加载扩展的内容,并发现以下代码:

/**
 * Handles a 'reload' button getting clicked.
 */
function handleReloadExtension(node) {
  // Tell the C++ ExtensionDOMHandler to reload the extension.
  chrome.send('reload', [node.extensionId]);
}

将此代码复制到我的事件处理程序中并没有帮助(是的,我尝试用实际代码替换[node.extensionId] )。 有人可以帮助我以正确的方式做到这一点,或者指出我的扩展代码是否正确? 完成后,我会将扩展程序和源文件放在我的博客上。


chrome.send函数不能被扩展的JavaScript代码访问,像newtab页面,历史和扩展页面这样的页面会使用它来与这些页面的C ++控制器代码进行通信。

您可以将扩展的更新推送给安装它的用户,这在这里描述。 用户的应用程序将在自动更新间隔命中或重新启动浏览器时更新。 但是,您不能以编程方式重新加载用户的扩展。 我认为这会带来安全风险。


现在,最简单的方法,使延长重载本身是调用chrome.runtime.reload() 该功能不需要清单中的任何权限。 要重新加载另一个扩展,请使用chrome.management.setEnabled() 。 它需要“权限”:清单中的[“管理”]。


我只是在扩展中遇到同样的问题。

事实证明,您可以使用chrome.storage.onChanged监听background.js存储更改,并执行刷新逻辑。

例如:

// Perform a reload any time the user clicks "Save"
chrome.storage.onChanged.addListener(function(changes, namespace) {
  chrome.storage.sync.get({
    profileId: 0
  }, function(items) {

    // Update status bar text here

  });
});

通过考虑changes参数,您也可以通过这种方式重新加载部分扩展。 chrome.runtime.reload()可能会更容易,但是这会减少开销。

链接地址: http://www.djcxy.com/p/91119.html

上一篇: How do I refresh/reload a Chrome Extension?

下一篇: Unit Testing Chrome Extensions?