我想通过浏览操作弹出窗口为Chrome扩展注入css或删除注入的css。我曾试图通过几个地方来了解如何做到这一点,但我不理解它们。
我想制作类似于"A browser action with a popup that changes the page color"的扩展名,但点击popup.html中的div来加载或卸载创建的css文件。
这是我目前使用内容脚本直接插入css的工作(https://github.com/Zhekoay/Self-Custom-Dark-Theme)。现在我想让它能够以不同的方式加载或卸载,而不是一次性加载所有。
答案 0 :(得分:1)
Chrome API无法删除通过manifest.json注入的CSS。
像demo extension一样注入代码,但使用file
参数和内容脚本的名称,该脚本将添加或删除(如果存在)link
元素document.documentElement
id
等于chrome.runtime.id
且href
指向web accessible CSS文件的"content_scripts"
。
"web_accessible_resources": ["*.css"]
div
添加到manifest.json chrome.tabs.executeScript({file: 'content.js'});
添加点击处理程序
点击处理程序中的(function() {
var styleElement = document.getElementById(chrome.runtime.id);
if (styleElement) {
styleElement.remove();
return;
}
var css = ({
'www.youtube.com': 'app_yt_HoveredImg.css',
'www.messenger.com': 'fb_messenger_styles.css',
'www.google.com': 'google_styles.css',
'translate.google.com': 'google_styles.css',
'apis.google.com': 'google_styles.css',
})[location.hostname];
if (!css) {
return;
}
styleElement = document.createElement('link');
styleElement.id = chrome.runtime.id;
styleElement.rel = 'stylesheet';
styleElement.href = chrome.runtime.getURL(css);
document.documentElement.appendChild(styleElement);
})();
content.js:
"tabs"
注意,在此工作流程中,您只需要"permissions": ["activeTab"]
而不是activeTab
:优点是while
在安装扩展程序时不会要求权限。