Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >How to get the extension icon data in Manifest V3

How to get the extension icon data in Manifest V3

作者头像
jgrass
发布于 2024-12-25 10:25:10
发布于 2024-12-25 10:25:10
6000
代码可运行
举报
文章被收录于专栏:蔻丁杂记蔻丁杂记
运行总次数:0
代码可运行

需求

在 background 中,拿到了扩展 icon 的 URL 链接,如:chrome://extension-icon/mciiogijehkdemklbdcbfkefimifhecn/128/0,如何获取其二进制数据。

目的:对于记录扩展安装卸载的功能而言,能够获取扩展的 icon 数据并保存下来,可以优化用户界面展示。如果此扩展已经卸载,而没有提前将其 icon 保存,在查看历史记录时,就会无法显示其 icon。

现状

先说结论:没有办法可以实现。

在 Manifest V3 中,background 使用 service-workers 实现,也就是没有了 BOM 和 DOM 相关的内容。

Chrome extensions: Use the “background.service_worker” key instead manifest_version 3 - Stack Overflow

1 无法使用 Image 元素,让其帮忙渲染 Icon 图片。

2 无法使用 XMLHttpRequest 来下载数据。

3 service-worker 中有 fetch,但是其不支持 chrome:// 协议。

所以,就无法获取到 icon 的具体数据了。

Chrome 的同学收到了反馈,并记录了 issue,但并没有打算处理。

How to get the extension icon data in Manifest V3

1257227 - Cannot retrieve extension icons in JS using the chrome.management API - chromium

曲线救国

在讨论中,Simeon Vincent 提到了一个曲线救国的方案,在 background 中监听到有扩展安装之后,打开一个新的 HTML 页面(这个页面是有完整 BOM 和 DOM 支持的),在这个页面中完成 icon 数据的获取。

background.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chrome.management.onInstalled.addListener((info) => {  spawnSyncIconsPage();});
function spawnSyncIconsPage() {  return chrome.windows.create({    url: chrome.runtime.getURL('sync-icons.html'),    state: chrome.windows.WindowState.MINIMIZED,  });}

可以实现目的,但是会打开一个新的页面,用户会觉得很奇怪。虽然这个页面是最小化的,而且完成工作之后会被自动关闭。

service-worker 的其它影响

没有了 window 全局对象,可以使用 globalThis

1 indexedDB

如果习惯于使用 window.indexedDB,还以为 indexedDB 在 service-worker 不支持了。可以直接使用 indexedDBglobalThis.indexedDB

2 canvas

在网页中,习惯使用 HTMLCanvasElement 或者 document.createElement('canvas') 来创建 canvas。

也可以直接使用 OffscreenCanvas

原文链接: https://cloud.tencent.com/developer/article/2481572

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年8月30日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
k8s系列教程-初识k8s
搭建k8s开发环境有三种,一种是通过docker desktop + Minikube 来直接在你的电脑上搭建,这种搭建方式存在的问题比较多,很多功能不支持,不建议使用。另外一种方式是通过Docker Desktop安装k8s,这种k8s是单机版的,master 和node 是同一个节点也就是本机,这种方式安装的k8s基本上能满足我们的学习需求,初期学习阶段可以使用这种安装方式。还有就是通过前文介绍 vagrant 制作box 然后创建集群安装,这种安装方式是最完整也是最麻烦的。现在先介绍第二种安装方式,第二种方式是把k8s 镜像拉取下来并运行容器,但因为国内网络的问题,镜像依赖拉不下来,我们可以上github 拉阿里云的k8s-for-docker-desktop 到本地安装。
六个核弹
2022/12/23
1.4K0
k8s系列教程-初识k8s
Kubernetes/K8S快速入门
官方文档:https://kubernetes.io/zh/docs/setup/
码客说
2021/03/04
1.7K0
《k8s 集群搭建》不要让贫穷扼杀了你学 k8s 的兴趣!
阅读这篇文章先需要对 docker 的基本知识有所了解!相关阅读请移步:Docker上手,看完觉得自己又行了!
蔡不菜丶
2021/04/16
1.8K1
《k8s 集群搭建》不要让贫穷扼杀了你学 k8s 的兴趣!
docker、k8s 面试总结
Docker 是基于容器技术实现的,容器技术最开始是基于 Linux Container(简称 LXC)技术实现的,通过内核提供的 Namespace 和 Cgroup 机制,实现了对应用程序的隔离以及物理资源的分配。
lincoln
2022/03/02
1.6K0
k8s实践(1)--k8s集群入门介绍和基础原理
1、简单了解集群的工作原理和基础概念,名词解释。 2、安装etcd集群:etcd分布式键值存储系统,用于保持集群状态,比如Pod、Service等对象信息。 3、安装k8s集群,简单了解集群的如何工作。 4、搭建集群网络:基础网络搞好,后面才能顺利部署各种资源。 5、学习k8s的安全、Secrets,ssl认证。如果安全认证没有搞好,创建pod和service都会报各种错误。 6、然后我们深入学习pod和service。 7、深入学习集群工作原理分析,从基础到深度,才能学的扎实。 8、有了pod和service,就需要知道如果发现,学习coreDNS 9、开始部署一些有状态的服务 10、案例实践
黄规速
2022/04/14
2.1K0
k8s实践(1)--k8s集群入门介绍和基础原理
最详细的 K8S 学习笔记总结(2021最新版)!建议收藏
虽然 Docker 已经很强大了,但是在实际使用上还是有诸多不便,比如集群管理、资源调度、文件管理等等。那么在这样一个百花齐放的容器时代涌现出了很多解决方案,比如 Mesos、Swarm、Kubernetes 等等,其中谷歌开源的 Kubernetes 是作为老大哥的存在。
民工哥
2021/04/18
9.5K2
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN相比,对容器尤其是 Docker的支持更加原生,同时提供了更强大的机制实现资源调度,自动 管理容器生命周期,负载均衡,高可用等底层功能,使开发者可以专注于开发应用。 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用
863987322
2018/03/29
5.2K0
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
带你一步一步摸索k8s
上面就是k8s的图标,是不是看上去很像海盗船的船舵,没错,Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。而且是谷歌“藏了多年的秘密武器”——-Borg 系统的开源版本
ikun999
2025/04/29
2510
带你一步一步摸索k8s
《K8S权威指南》读书笔记-入门篇
一. k8s介绍 1. 是什么 kubernetes:古希腊“舵手”的意思(指引鲸鱼-docker) Production-Grade Container Orchestration:生产级别的容器编排系统 is an open-source system for automating deployment, scaling, and management of containerized applications:用于自动部署,扩展和管理容器化应用程序的开源系统 2. 发展历程 google内部使用十年之
kinnylee
2020/10/15
1.6K0
《K8S权威指南》读书笔记-入门篇
【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装
首先,K8s并不是一个传统意义上的 PaaS平台即服务的工具,它充分给使用者提供了很多很多选择的空间。
程序员洲洲
2024/06/07
2.1K0
【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装
K8S折磨的安装篇
这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件:
大忽悠爱学习
2022/08/23
7980
K8S折磨的安装篇
K8S | 核心原理分析
从服务的能力上看,可以进行分层管控,只是其中有相当一部分服务层,改动更新的频率很低,所以感知也不明显;
知了一笑
2023/09/01
3530
K8S | 核心原理分析
k8s学习五-k8s介绍(为什么要学k8s)
互联网早期,会直接将应用程序部署在物理机上,例如直接将java程序部署到物理机中
仙士可
2022/09/13
1.2K0
k8s学习五-k8s介绍(为什么要学k8s)
k8s实践(12)--K8s service服务详解
Kubernetes Pod 是有生命周期的,它们可以被创建,也可以被销毁,然而一旦被销毁生命就永远结束。 通过 ReplicationController 能够动态地创建和销毁 Pod(例如,需要进行扩缩容,或者执行)。 每个 滚动升级 Pod 都会获取它自己的 IP 地址,即使这些 IP 地址不总是稳定可依赖的。 这会导致一个问题:在 Kubernetes 集群中,如果一组 Pod(称为 backend)为其它 Pod (称为 frontend)提供服务,那么那些 frontend 该如何发现,并连接到这组 Pod 中的哪些 backend 呢?
黄规速
2022/04/14
9.5K0
k8s实践(12)--K8s service服务详解
k8s架构与组件详解
k8s系统在设计是遵循c-s架构的,也就是我们图中apiserver与其余组件的交互。在生产中通常会有多个Master以实现K8s系统服务高可用。K8s集群至少有一个工作节点,节点上运行 K8s 所管理的容器化应用。
你大哥
2021/10/11
4K0
k8s架构与组件详解
认识Kubernates(K8S)
在后端开发中,在介绍Jenkins的可伸缩部署方式上,主要有两种方式:一种是基于Docker(或者docker-swarm 集群)的部署方式,另外一种是基于kubernetes的部署方式(而kubernetes也是基于docker而设计的)。 基本概念 kubernetes是google开源的容器集群管理系统,提供应用部署、维护、扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用,简称:k8s。 基本概念 Pod:若干相关容器的组合,Pod包含的容器运行在同一host上,这些容器使用相
xiangzhihong
2018/02/06
2.9K0
认识Kubernates(K8S)
运维篇 k8s(Kubernetes)
k8s是kubernetes的简称,即字母“k”到最后一位相隔8位字母。名字来源于希腊语,意思是“舵手”或“领航员”。
用针戳左手中指指头
2021/01/29
3.5K0
运维篇 k8s(Kubernetes)
K8S太火了!花10分钟玩转它不香么?
Kubernetes(简称K8S,K和S之间有8个字母)是用于自动部署,扩展和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。
macrozheng
2021/01/25
3.1K0
K8S太火了!花10分钟玩转它不香么?
图解K8s源码 - 序章 - K8s组件架构
在之前的文章中我们介绍了从传统部署方式到虚拟化再到容器部署方式的演变,随着容器数量规模的不断增大,我们急需一个大规模容器编排系统。Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式的完备的可弹性运行的分布式系统开发和支撑平台。
才浅Coding攻略
2022/12/12
7980
图解K8s源码 - 序章 - K8s组件架构
k8s的概念与架构介绍
K8S,全称 Kubernetes,是一个用于管理容器的开源平台。它可以让用户更加方便地部署、扩展和管理容器化应用程序,并通过自动化的方式实现负载均衡、服务发现和自动弹性伸缩等功能。
张哥编程
2024/12/13
3160
相关推荐
k8s系列教程-初识k8s
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验