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

Tra*_*Guy 14 javascript google-chrome

我正在开发Chrome 4(目前为4.0.249.0)的扩展程序,该扩展程序将在状态栏中显示用户的StackOverflow/SuperUser/ServerFault信誉.我设计了一个选项页面来获取用户的个人资料ID,然后将它们保存到localStorage并在扩展中很好地阅读它们.这一切都很棒.
问题是我找不到一种(程序化的)方法来在保存选项时刷新扩展名.我试图location.reload();在右键单击时从扩展页面调用- 无济于事.我进一步追求它并尝试查看Chrome chrome://extensions/页面重新加载扩展程序的功能,并找到了以下代码:

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

将此代码复制到我的事件处理程序没有帮助(是的,我尝试用[node.extensionId]实际代码替换).有人可以帮助我以正确的方式做这件事,或者指点我正确执行此操作的扩展代码吗?完成后,我会将扩展及其来源放在我的博客上.

Kon*_*nin 33

现在,进行扩展以重新加载自身的最简单方法是调用 chrome.runtime.reload().此功能不需要清单中的任何权限.要重新加载另一个扩展使用chrome.management.setEnabled().它需要"权限":清单中的["管理"].


Pie*_*tte 5

您的扩展程序的javascript代码无法访问chrome.send函数,newtab页面,历史记录和扩展页面等页面使用它来与这些页面的C++控制器代码进行通信.

您可以将扩展的更新推送到安装了它的用户,这将在此处描述.一旦命中自动更新间隔或重新启动浏览器,将更新用户的应用程序.但是,您无法以编程方式重新加载用户的扩展.我认为这会带来安全风险.

  • 这个问题有点陈旧,但如果您有权访问[扩展程序管理API],现在可以触发重新加载的扩展程序(http://code.google.com/chrome/extensions/management.html) (6认同)

Mar*_*rek 5

window.location.reload() 对我有用

我使用的是 Chromium 6.x,所以它可能会在较新的版本中得到修复

  • 我在我的 background.js 中使用过它。但是您也可以从您的视图中使用它: chrome.extension.getBackgroundPage().window.location.reload() (5认同)