当我使用时:
<img src="chrome://favicon/http://www.google.com.hk"/>
我编写的扩展程序出现了问题,它提示:
"不允许加载本地资源: chrome://favicon/http://www.google.com.hk"
我该如何解决这个问题呢?
<img src="chrome://favicon/http://www.google.com.hk"/>
我编写的扩展程序出现了问题,它提示:
"不允许加载本地资源: chrome://favicon/http://www.google.com.hk"
我该如何解决这个问题呢?
function fetchFavicon(url) {
return new Promise(function(resolve, reject) {
var img = new Image();
img.onload = function () {
var canvas = document.createElement("canvas");
canvas.width =this.width;
canvas.height =this.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(this, 0, 0);
var dataURL = canvas.toDataURL("image/png");
resolve(dataURL);
};
img.src = 'chrome://favicon/' + url;
});
}
我曾遇到同样的问题,在Google开发者网站搜索后发现,您需要在manifest.json
中添加一个权限,以访问chrome://favicon/
。
然后只需转到chrome://extensions
并按重新加载来读取清单更改即可。
注意:斜杠后面的反斜杠非常重要!
自从MV3版本以后,您不能再使用chrome://favicon/
。相反,您需要使用新的网站图标权限:
favicon
到您的权限中{
"name": "Favicon API in a popup",
"manifest_version": 3,
...
"permissions": ["favicon"],
...
}
对于我这个简单的情况:
const favIconUrl = `chrome-extension://${chrome.runtime.id}/_favicon/?pageUrl=${encodeURIComponent(url)}&size=32`;
function faviconURL(u) {
const url = new URL(chrome.runtime.getURL("/_favicon/"));
url.searchParams.set("pageUrl", u);
url.searchParams.set("size", "32");
return url.toString();
}
const img = document.createElement('img');
img.src = faviconURL("https://www.google.com")
document.body.appendChild(img);
"web_accessible_resources": [
{
"resources": ["_favicon/*"],
"matches": ["<all_urls>"],
"extension_ids": ["*"]
}
]