[英]Chrome Extension: How to insert CSS conditioned on variable from Chrome storage using insert CSS?
我对 Chrome 扩展程序有点陌生,所以我想我可能只是遗漏了一些小东西,但我试图让用户根据他们的选项加载一个额外的 CSS 页面和一个 JS 页面(这基本上是一个不同的主题)。
我将触发负载的变量存储为tm
现在,在 JS 页面中,我有:
var Theme;
function getVars() {
chrome.storage.sync.get({
tm: "",
}, function(items) {
Theme = items.tm;
changeTheme();
});
}
这会触发changeTheme
函数,并根据Theme
的值运行正确的 JS 函数。
问题是我还需要加载一个 CSS 表,但我无法弄清楚这部分。 现在,在同一个 JS 文件中,在changeTheme
函数中,我也在调用:
chrome.tabs.insertCSS({file: "starWars.css"});
这给了我错误:
Error in response to storage.get: TypeError: Cannot read property 'insertCSS' of undefined
at changeTheme (chrome-extension://ipicalmjapbogbfpaddglpachiijdffn/starWars.js:96:14)
at Object.callback (chrome-extension://ipicalmjapbogbfpaddglpachiijdffn/starWars.js:7:5)
at getVars (chrome-extension://ipicalmjapbogbfpaddglpachiijdffn/starWars.js:3:23)
at chrome-extension://ipicalmjapbogbfpaddglpachiijdffn/starWars.js:10:1
我的清单版本是2
,这与我在此找到的其他 StackOverflow 帖子不同。 您不能在第 2 版清单中使用背景,出于其他原因我需要保留在此版本中。 我的权限中确实有"tabs"
和"activeTab"
,以及扩展程序所在的页面。
任何人都可以从这里指出我正确的方向吗? 如果需要,很高兴提供更多信息。
background_page 属性已被替换为包含
scripts
或page
属性的background
属性。 事件页面文档中提供了详细信息。 2.可以使用chrome.tabs.insertCSS
从弹出/背景脚本3.您不能使用chrome.tabs.insertCSS
从内容脚本
因此,如果您想在内容脚本中注入 CSS 文件,您有两个选择:
在 manifest.json 中的"web_accessible_resources"键下声明 CSS 文件,然后简单地添加一个指向该 CSS 文件的<link>
元素:
document.head.insertAdjacentHTML('beforeend', '<link rel="stylesheet" type="text/css" href="' + chrome.runtime.getURL("starWars.css") + '">' );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.