如何获取chrome中的书签图标?

时间:2012-04-24 16:01:54

标签: javascript google-chrome google-chrome-extension

当我使用时:

<img src="chrome://favicon/http://www.google.com.hk"/>

在我的扩展名中。它出了问题。它发出了警告

“不允许加载本地资源:chrome:// favicon / http://www.google.com.hk”

我该如何解决?

3 个答案:

答案 0 :(得分:4)

仔细检查以确保您添加了"chrome://favicon/" permission

这是"manifest_version" : 2分机吗?我不熟悉它们,但它们可能要求您指定允许此项的Content Security Policy

答案 1 :(得分:4)

我遇到了同样的问题。我试过看看chrome:// favicon /只能使用扩展程序自己的页面,例如弹出窗口或扩展程序创建的标签。如果从注入的内容脚本中将其加载到常规选项卡中,则它不起作用。

如果要从注入的内容脚本加载favicon,有几种方法

  1. 首先是对某些服务使用请求来获取网络的图标。例如:http://www.google.com/s2/favicons?domain=https://stackoverflow.com/ 这种方式工作正常,除了内容脚本注入通过https加载的页面。原因是Mixed Content blocking

  2. 第二个是从chrome:// favicon /后台加载favicon,然后转移到内容脚本。

  3. 示例:此函数用于在后台脚本中运行

    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并按重新加载以阅读清单更改。

  

注意:尾部斜杠很重要!