是否有Chrome扩展程序安装挂钩/ API函数,可让我在安装或更新插件后执行操作?
我想在安装扩展程序之后执行操作,并且只在安装扩展程序之后执行。此操作只应在扩展程序执行一次(安装后或更新后)。
有些人建议在localStorage中设置扩展的版本,我遇到的问题是,在首次安装插件时,有权访问localStorage的内容脚本不会加载到页面中。
安装插件后的AFAIK,它使用注入选项卡/页面的内容脚本,页面必须重新加载。
我不知道如何从后台页面访问localStorage; localStorage只能从内容脚本访问。
要从后台页面获取版本号到内容脚本,需要使用chrome API函数来执行脚本:
chrome.tabs.executeScript(null, {code:function_to_execute}, function() { // callback });
但是,当您安装插件时,此插件需要注入内容脚本的页面已经加载,它不会注入内容脚本,您必须重新加载页面。
查看更详细的一些提示,为了保存版本号,可以访问后台页面的localStorage。但是,对于我需要做的事情,即在安装或更新插件后重新加载特定URL上的特定选项卡(以确保内容脚本是最新版本),最终没有必要打扰localStorage。
为了保持主题,有关将版本号写入localStorage(在后台页面中)然后检查清单文件中的版本号的建议足以让某人先运行脚本它安装/或更新的时间。
将清单文件提供给后台页面(注意:这是从其他地方获取的,我不赞成它,但我不记得来源,如果你知道,请告诉我,我会添加它)。
// MAKE MANIFEST FILE AVAILABLE
chrome.manifest = (function() {
var manifestObject = false;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
manifestObject = JSON.parse(xhr.responseText);
}
};
xhr.open("GET", chrome.extension.getURL('/manifest.json'), false);
try {
xhr.send();
} catch(e) {
console.log('Couldn\'t load manifest.json');
}
return manifestObject;
})();
现在您可以访问您的版本号:chrome.manifest.version
要写入localStorage,只需将其传递出去:localStorage['my_plugin_version'] = chrome.manifest.version