如何自动重新加载chrome扩展?

Jer*_*rry 7 javascript google-chrome google-chrome-extension

我正在开发一个chrome扩展,我发现有重复无用的手动重新加载工作.

保存文件时,必须刷新chrome:\\extensions页面以允许浏览器重新加载扩展名.然后,您必须重新加载测试页以查看对文件的更改是否生效.

我是Chrome扩展开发的新手.有没有办法减少重复工作?我也很好奇Chrome扩展开发工作流程的最佳实践是什么.

英语不好,随意纠正.

gka*_*pak 11

扩展可以通过调用重新加载自身,chrome.runtime.reload()因此触发扩展来执行此操作.

一种对我有用的方法是观察标签的onUpdated事件并查找特定的URL(您已经提出),例如http://localhost/reloadX?id=....

这是示例代码(放在background.js中):

var myReloadURL = 'http://localhost/reloadX?id='
                  + chrome.i18n.getMessage('@@extension_id');

chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
    if (info.url === myReloadURL) {
        chrome.tabs.remove(tabId);
        chrome.runtime.reload();
    }
});
Run Code Online (Sandbox Code Playgroud)

其他权限(在manifest.json声明):

...
"permissions": [
    ...
    "tabs",
    "http://localhost/reloadX?id=*"
Run Code Online (Sandbox Code Playgroud)

myReloadURL 是任意的,可以是任何URL,只是不必是真正的URL或资源将无法访问.

现在,要重新加载您的扩展程序,您需要在Chrome中打开以下地址:
http://localhost/reloadX?id=<your_extension_id>

您可以选择如何在保存时触发该操作.它可能是on-save你编辑器中的一个钩子,一个自定义的grunt-watch任务(因为你似乎熟悉grunt)等等.


(顺便说一句,你不需要重新加载chrome://extensions页面.重新加载扩展就足够了.)