如何使用 Chrome 扩展更改网站中的 "style" 图片
How Do I Change a "style" Image in a Website Using a Chrome Extension
我想弄清楚如何使用 chrome 扩展来更改网站的图像,而不仅仅是具有“src”属性的扩展。就我而言,我正在尝试更改 https://www.foxnews.com/ 上的徽标,当我检查并查看“样式”时,我可以看到它是“背景图像”属性。问题是,当我将它设置为我自己的图像时(使用以前在其他地方使用过的方法),没有任何反应。我可以更改“背景大小”和“背景颜色”,但图像不会改变。有人可以提供解决方案吗?
到目前为止,这是我的代码:
manifest.json:
{
"name": "ChromeExtension",
"description": "E",
"version": "1.0",
"manifest_version": 3,
"web_accessible_resources": [
{
"resources": ["*.jpg","*.JPG"],
"matches": ["<all_urls>"]
}
],
"permissions": ["storage","activeTab","scripting"],
"content_scripts":[
{
"matches": ["https://www.foxnews.com/"],
"js":["fNews.js"]
}
]
}
和fNews.js:
document.getElementsByClassName("logo")[0].style.backgroundColor = '#3aa757';
document.getElementsByClassName("logo")[0].setAttribute('href','https://www.cnn.com/');
document.getElementsByClassName("logo")[0].style.backgroundSize = '50%';
document.getElementsByClassName("logo")[0].style.backgroundImage = 'chrome-extension://igdebagnkjaemmchleldelgggjpbngkl/Duck.jpg';
您可以尝试将包含更改的 css 文件直接注入 css 本身,这将覆盖当前页面 css。
使用您的徽标样式创建 css 文件:
.logo{
background-image: url('...');
background-color: #3aa757;
background-size: 50%;
}
然后在你的js脚本中将其注入页面:
window.onload = async () => {
let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
// inject css
await chrome.scripting.insertCSS({
target: {tabId: tab.id},
files: ['logo.css'],
});
}
并为manifest.json添加权限:
{
"name": "....",
...
"permissions": [
"activeTab",
"tabs" ,
"scripting"
],
...
}
backgroundImage可能包含几种类型的内容所以我们需要在这里使用url()
:
document.querySelector('.logo').style.backgroundImage =
`url("${ chrome.runtime.getURL('Duck.jpg') }");`
我们使用 chrome.runtime.getURL
而不是硬编码扩展程序的 ID。
我想弄清楚如何使用 chrome 扩展来更改网站的图像,而不仅仅是具有“src”属性的扩展。就我而言,我正在尝试更改 https://www.foxnews.com/ 上的徽标,当我检查并查看“样式”时,我可以看到它是“背景图像”属性。问题是,当我将它设置为我自己的图像时(使用以前在其他地方使用过的方法),没有任何反应。我可以更改“背景大小”和“背景颜色”,但图像不会改变。有人可以提供解决方案吗?
到目前为止,这是我的代码: manifest.json:
{
"name": "ChromeExtension",
"description": "E",
"version": "1.0",
"manifest_version": 3,
"web_accessible_resources": [
{
"resources": ["*.jpg","*.JPG"],
"matches": ["<all_urls>"]
}
],
"permissions": ["storage","activeTab","scripting"],
"content_scripts":[
{
"matches": ["https://www.foxnews.com/"],
"js":["fNews.js"]
}
]
}
和fNews.js:
document.getElementsByClassName("logo")[0].style.backgroundColor = '#3aa757';
document.getElementsByClassName("logo")[0].setAttribute('href','https://www.cnn.com/');
document.getElementsByClassName("logo")[0].style.backgroundSize = '50%';
document.getElementsByClassName("logo")[0].style.backgroundImage = 'chrome-extension://igdebagnkjaemmchleldelgggjpbngkl/Duck.jpg';
您可以尝试将包含更改的 css 文件直接注入 css 本身,这将覆盖当前页面 css。
使用您的徽标样式创建 css 文件:
.logo{
background-image: url('...');
background-color: #3aa757;
background-size: 50%;
}
然后在你的js脚本中将其注入页面:
window.onload = async () => {
let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
// inject css
await chrome.scripting.insertCSS({
target: {tabId: tab.id},
files: ['logo.css'],
});
}
并为manifest.json添加权限:
{
"name": "....",
...
"permissions": [
"activeTab",
"tabs" ,
"scripting"
],
...
}
backgroundImage可能包含几种类型的内容所以我们需要在这里使用url()
:
document.querySelector('.logo').style.backgroundImage =
`url("${ chrome.runtime.getURL('Duck.jpg') }");`
我们使用 chrome.runtime.getURL
而不是硬编码扩展程序的 ID。