我有一个铬扩展,被转换为Safari扩展使用xcode safari-web扩展-转换器实用程序。有了这个,除了一件事,一切似乎都好起来了。在后台脚本中,我从web可访问资源中加载一些数据,如下所示:
export const fetchConfig = async () => {
let dataURL = '';
if (!checkBrowser(BROWSERS.Chrome, true)) {
dataURL = chrome.runtime.getURL('config.json');
} else {
dataURL = browser.runtime.getURL('config.json');
}
const res = await fetch(dataURL);
return await res.json();
}这适用于除Safari以外的所有浏览器。
我得到的运行时URL如下:
safari-web-extension://E522689D-94A6-4561-90F3-BF22C7848965/config.json
但是,fetch调用失败,错误如下:
未能加载资源:不支持的URL
我无法在文档或开发人员支持中找到任何关于这方面的内容,但是我们不能在Safari中访问后台的web可访问资源吗?
我的清单文件如下:
{
"manifest_version": 3,
"name": "Ext Dev",
"author": "Test",
"description": "Test",
"version": "1.1.0",
"icons": {
"16": "assets/icon/icon16.png",
"32": "assets/icon/icon32.png",
"48": "assets/icon/icon48.png",
"128": "assets/icon/icon128.png"
},
"host_permissions": [
...
host addresses here
...
],
"permissions": ["storage", "tabs"],
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self';"
},
"web_accessible_resources": [{
"resources": ["config.json"],
"matches": ["<all_urls>"]
}],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"],
"css": ["commonstyles.css"],
"run_at": "document_end",
"all_frames": true
}
],
"background": { "service_worker": "background.js" },
"action": {
"default_title": "Ext Client",
"default_icon": {
"20": "assets/icon/icon20.png",
"40": "assets/icon/icon40.png"
}
}}
发布于 2022-09-20 14:27:45
我遇到了与此完全相同的问题,并在Safari 16.0的发布说明中发现,它们包括“固定后台服务工作人员来加载包资源”。将macOS升级到12.6,附带safari 16.0,为我解决了这个问题。希望这能帮上忙!
https://stackoverflow.com/questions/73399285
复制相似问题