由于安全限制,本文采取间接的方式实现
1、项目部分
比如通过cookie、localStorage等进行状态存储
1.1、初始化判断
function getCookie(name){
let arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"))
if(arr != null){
return unescape(arr[2])
}else{
return null
}
}
let _isChromePluginInstall = getCookie('chrome-plugin');
if(_isChromePluginInstall && _isChromePluginInstall==='Y'){
// 已安装插件
}else{
// 未安装插件
}
1.2、卸载状态变更
function getQueryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
let _on = getQueryString('on')
if(_on && _on === 'uninstalled'){
// 修改插件安装状态
// 其他业务处理
}
2、Chrome Extensions部分
在
background.js
中进行安装、卸载事件监听文章来源:https://www.toymoban.com/news/detail-680157.html
2.1、安装事件监听
/**
* 首次安装扩展程序、扩展程序更新到新版本以及 Chrome 更新到新版本时触发
* @link https://developer.chrome.com/docs/extensions/reference/runtime/#event-onInstalled
*/
chrome.runtime.onInstalled.addListener(function () {
setTimeout(function () {
// 对目标项目进行cookie写入
const _cf = {
name: 'chrome-plugin',
value: 'Y',
url: 'http://xxxx.xxx',
domain: 'xxxx.xxx'
}
chrome.cookies.set(_cf, function (res) {
// ...
});
}, 1000)
})
2.2、卸载事件监听
/**
* 转跳至目标项目地址进行状态变更、统计等事务处理
* @link https://developer.chrome.com/docs/extensions/reference/runtime/#method-setUninstallURL
*/
chrome.runtime.setUninstallURL(`${SysConfig.APP_URL}/#?on=uninstalled`, ()=>{})
Ps:management
权限的监听事件,似乎无法对安装、卸载起到作用,具体原因不清楚,还有待研究。
有兴趣的小伙伴也可以研究研究,官方文档地址:https://developer.chrome.com/docs/extensions/reference/management/文章来源地址https://www.toymoban.com/news/detail-680157.html
到了这里,关于【chrome扩展开发】如何在项目中判断插件是否已安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!