当我使用时:
<img src="chrome://favicon/http://www.google.com.hk"/>
在我的扩展名中。它出了问题。它发出了警告
“不允许加载本地资源:chrome:// favicon / http://www.google.com.hk”
我该如何解决?
答案 0 :(得分:4)
仔细检查以确保您添加了"chrome://favicon/"
permission。
这是"manifest_version" : 2
分机吗?我不熟悉它们,但它们可能要求您指定允许此项的Content Security Policy。
答案 1 :(得分:4)
我遇到了同样的问题。我试过看看chrome:// favicon /只能使用扩展程序自己的页面,例如弹出窗口或扩展程序创建的标签。如果从注入的内容脚本中将其加载到常规选项卡中,则它不起作用。
如果要从注入的内容脚本加载favicon,有几种方法
首先是对某些服务使用请求来获取网络的图标。例如:http://www.google.com/s2/favicons?domain=https://stackoverflow.com/ 这种方式工作正常,除了内容脚本注入通过https加载的页面。原因是Mixed Content blocking
第二个是从chrome:// favicon /后台加载favicon,然后转移到内容脚本。
示例:此函数用于在后台脚本中运行
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;
});
}
我正在使用这种方式进行扩展,它运行正常。请查看Super Focus Tabs分机。
答案 2 :(得分:3)
在google developers site上搜索您需要向chrome://favicon/
中的manifest.json
添加权限后发现同样的问题。
然后转到chrome://extensions
并按重新加载以阅读清单更改。
注意:尾部斜杠很重要!