我的扩展使用旧库,它是 HTML 5 文件系统 API 的包装器,用于管理本地文件。
该库创建具有请求大小的持久存储。可以通过 chrome-extension://{extensionID}/ 链接访问存储文件。
但是从我的扩展页面中,我无法访问 元素内的这些图像。
从清单 v3 开始,文件系统 API 不能直接在 service_worker 进程中使用,我将其移至屏幕外页面。它工作正常,文件被正确保存,并且可以通过 filesystem url 访问和下载它们(不是从页面,而是通过 url,正在下载它们)。
我还知道,在清单 v3 中,您应该在 manifest.json 文件中描述 web_accessible_resources: https://developer.chrome.com/docs/extensions/reference/manifest/web-accessible-resources
所以,这个配置部分可能应该是这样的:
"web_accessible_resources": [
{
"resources": ["persistent/*"],
"matches": ["<all_urls>"]
}
]
我这样做了,但仍然无法访问持久的本地文件。你能帮帮我吗,我哪里出错了?
我知道一种解决方案可能是将图标和图像转换为 base64 格式,但仍想考虑其他解决方案。
UPD:是否因为我的扩展名已解压而无法访问这些文件?
不用再回答这个问题了,我已经找到问题所在并解决了。正如我之前所说,我已将 Filesystem Api 的使用移至屏幕外页面,同时,我没有检查通过 chrome.runtime.sendMessage 发送的数据。我正在将网站图标解析为 blob,结果发现我需要将 blob 转换为 DataURL 格式,然后再将它们发送到屏幕外。