我正在开发一个chrome扩展程序,我发现有重复无用的手动重新加载工作。
保存文件时,必须刷新chrome:\\extensions
页面才能让浏览器重新加载扩展程序。然后,您必须重新加载测试页以查看对文件的更改是否生效。
我是Chrome扩展程序开发的新手。有没有办法减少重复工作?我也很好奇Chrome扩展开发工作流程的最佳实践是什么。
英语不好,随意纠正。
答案 0 :(得分:11)
扩展程序可以通过调用 chrome.runtime.reload()
重新加载,因此触发扩展程序就可以了。
一种对我有用的方法是观看标签 onUpdated
事件,并查找特定的网址(您已提出),例如: 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();
}
});
其他权限(在 manifest.json 中声明):
...
"permissions": [
...
"tabs",
"http://localhost/reloadX?id=*"
myReloadURL
是任意的,可以是任何URL,只是不必是真正的URL,否则资源将无法访问。
现在,为了重新加载您的扩展程序,您需要在Chrome中打开以下地址:
http://localhost/reloadX?id=<your_extension_id>
由您决定如何在保存时触发该操作。它可能是编辑器中的on-save
钩子,一个自定义的grunt-watch任务(因为你似乎熟悉grunt)等。
(顺便说一下,您无需重新加载chrome://extensions
页面。只需重新加载扩展程序即可。)
答案 1 :(得分:0)
我必须揭示这一点,因为对于假人(-> miself)而言,它比gkalpak的解决方案要复杂得多,但是基于此。这使用普通书签重新加载Chrome扩展程序。 作为前提条件,Apache必须在端口80上运行。
将webRequest权限项添加到manifest.json:
“权限”:[ “ webRequest”,“标签”],
然后将一些代码复制到background.js:
var reloadURL = 'http://localhost/subdir/reload_dummy.php';
var cbBeforeRequest = function (info) {
if (info.url === reloadURL) {
chrome.runtime.reload();
alert("HiiHaa!:" + info.url);
}
}
var filters = {urls: [reloadURL]};
chrome.webRequest.onBeforeRequest.addListener(cbBeforeRequest, filters);
答案 2 :(得分:-1)
我构建Clerc以便与任何LiveReload服务器一起开箱即用。只需在构建过程中包含任何兼容LiveReload的观察程序,Clerc将负责重新加载。