在我的chrome扩展程序中,我尝试查找站点的图标,然后将其替换为其他图标。我可以找到该网站的收藏夹网址,但是我仍在坚持如何实际替换它。
我尝试使用chrome.tabs.query
并使用它的favIconUrl
属性,但无法正常工作,因此我使用了一种方法,通过转到https://www.google.com/s2/favicons?domain=exampledomain.com
获取网站的图标。这确实获得了favicon的网址,但是我对如何继续替换favicon感到困惑。
编辑:包括更多代码
chrome.commands.onCommand.addListener(colorTabs);
function colorTabs(command)
{
var url = "https://www.google.com/s2/favicons?domain=";
var addFaviconUrl;
if ("left-key-toggle-feature" == command)
{
chrome.tabs.query({currentWindow: true, active: true}, function(tabs)
{
/* favicon url */
addFaviconUrl = tabs[0].url;
url += addFaviconUrl;
chrome.tabs.sendMessage(tabs[0].id, {url: url}, function(response) {});
})
}
};
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse)
{
if (request.url)
{
var link = document.querySelector("link[rel*='shortcut icon']") || document.createElement("link");
link.type = "image/x-icon";
link.rel = "shortcut icon";
link.href = chrome.runtime.getURL("img/red-circle-16.png"); // not working
//link.href = "https://www.google.com/s2/favicons?domain=google.com"; // works!
document.getElementsByTagName("head").appendChild(link);
}
})
答案 0 :(得分:1)
您需要使用类似消息传递的方式将URL从background.js传递到contentscript.js background.js
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {url: url}, function(response) {});
});
在内容脚本上,您需要替换网址,例如
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.url)
{
var link = document.querySelector("link[rel*='icon']") || document.createElement('link');
link.type = 'image/x-icon';
link.rel = 'shortcut icon';
link.href = url;
document.getElementsByTagName('head')[0].appendChild(link);
}
});