“不允许加载本地资源:chrome://favicon/”

Jon*_*atz 4 google-chrome-extension

我正在尝试使用 chromes favicon url 加载 url 的 favicon:

<img class='icon' src='chrome://favicon/yahoo.com' />
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

"Not allowed to load local resource: chrome://favicon/yahoo.com"
Run Code Online (Sandbox Code Playgroud)

在清单中我有:

  "permissions": [
    "chrome://favicon/"
],
Run Code Online (Sandbox Code Playgroud)

网上关于这个话题的资料不多。有什么建议?

Sud*_*han 5

您的代码中的问题

  • "permissions": ["chrome://favicon/"], 是清单文件中的无效模式

如果要favicon在扩展页面中使用选项卡的 URL,请使用 chrome.tabs API。

示范

清单文件

注册后台页面并添加必要的权限。

{
    "name": "Fav Icon",
    "description": "http://stackoverflow.com/questions/14800881/not-allowed-to-load-local-resource-chrome-favicon",
    "version": "1",
    "manifest_version": 2,
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "permissions": [
        "tabs",
        "<all_urls>"
    ]
}
Run Code Online (Sandbox Code Playgroud)

背景.js

chrome.tabs.query({
    "active": true,//fetch active tabs
    "currentWindow": true,//fetch tabs in current window
    "status": "complete",//fetch completely loaded windows
    "windowType": "normal"//fetch normal windows
}, function (tabs) {
    for (tab in tabs) {
        console.log(tabs[tab].favIconUrl);// Use this URL as needed
    }
});
Run Code Online (Sandbox Code Playgroud)

chrome.tabs.query 将在扩展页面中工作,如果您想在内容脚本中使用,请使用消息传递来传达 URL。

参考

  • 我不确定这篇文章有多久了,但是 `"permissions": ["chrome://favicon/"]` 是一个完全有效的清单文件声明。实际上需要显示这样的网址:`chrome://favicon/http://stackoverflow.com` (2认同)