Javascript Chrome扩展:根据localStorage中的选项插入不同的CSS文件
所以,我尝试做一个扩展,它有一个选项页面来选择CSS的一个变体,然后实现它 我可以使用内容脚本将CSS成功添加到页面,我的清单为:Javascript Chrome扩展:根据localStorage中的选项插入不同的CSS文件,javascript,css,google-chrome,google-chrome-extension,Javascript,Css,Google Chrome,Google Chrome Extension,所以,我尝试做一个扩展,它有一个选项页面来选择CSS的一个变体,然后实现它 我可以使用内容脚本将CSS成功添加到页面,我的清单为: { "name": "Extension", "description": "Description.", "version": "0.1", "manifest_version": 2, "options_page": "options.html", "content_scripts": [ { "mat
{
"name": "Extension",
"description": "Description.",
"version": "0.1",
"manifest_version": 2,
"options_page": "options.html",
"content_scripts": [
{
"matches": ["http://www.google.com*"],
"css": ["Test.css"]
}
]
}
这很好,选项页面只是来自的默认示例HTML和JavaScript
这适用于存储到localStorage的值,我不确定的是如何使用存储的值根据该值添加不同的CSS。比如,存储值“红色”将加载一个CSS文件到网站,而“绿色”将加载一个完全不同的CSS文件
非常感谢。您应该从清单中删除
内容脚本
属性(因为无法动态“自定义”它),并改用(更具体地说是)。(注意:根据您使用/调用它的方式,您需要在清单中声明
activeTab
或tabs
权限,以及相应的)
例如:
在WhatEverView.html
的JS上下文中:
var color = ...;
localStorage.setItem("color", color);
background.js中的:
function injectCSS(tabId) {
var color = localStorage.getItem("color");
var path = (color == "green") ? "file4green.css" : "file4red.css";
chrome.tabs.insertCSS(tabId, {
file: path,
allFrames: false
});
}
/* Call `injectCSS` in a callback of an event, e.g.
* - When the bowser-/page-action is clicked
* - When a tab is updated etc */
您应该从清单中删除content\u scripts
属性(因为无法动态“自定义”它),并使用(更具体地说是)。
(注意:根据您使用/调用它的方式,您需要在清单中声明activeTab
或tabs
权限,以及相应的)
例如:
在WhatEverView.html
的JS上下文中:
var color = ...;
localStorage.setItem("color", color);
background.js中的:
function injectCSS(tabId) {
var color = localStorage.getItem("color");
var path = (color == "green") ? "file4green.css" : "file4red.css";
chrome.tabs.insertCSS(tabId, {
file: path,
allFrames: false
});
}
/* Call `injectCSS` in a callback of an event, e.g.
* - When the bowser-/page-action is clicked
* - When a tab is updated etc */
您应该从清单中删除content\u scripts
属性(因为无法动态“自定义”它),并使用(更具体地说是)。
(注意:根据您使用/调用它的方式,您需要在清单中声明activeTab
或tabs
权限,以及相应的)
例如:
在WhatEverView.html
的JS上下文中:
var color = ...;
localStorage.setItem("color", color);
background.js中的:
function injectCSS(tabId) {
var color = localStorage.getItem("color");
var path = (color == "green") ? "file4green.css" : "file4red.css";
chrome.tabs.insertCSS(tabId, {
file: path,
allFrames: false
});
}
/* Call `injectCSS` in a callback of an event, e.g.
* - When the bowser-/page-action is clicked
* - When a tab is updated etc */
您应该从清单中删除content\u scripts
属性(因为无法动态“自定义”它),并使用(更具体地说是)。
(注意:根据您使用/调用它的方式,您需要在清单中声明activeTab
或tabs
权限,以及相应的)
例如:
在WhatEverView.html
的JS上下文中:
var color = ...;
localStorage.setItem("color", color);
background.js中的:
function injectCSS(tabId) {
var color = localStorage.getItem("color");
var path = (color == "green") ? "file4green.css" : "file4red.css";
chrome.tabs.insertCSS(tabId, {
file: path,
allFrames: false
});
}
/* Call `injectCSS` in a callback of an event, e.g.
* - When the bowser-/page-action is clicked
* - When a tab is updated etc */
令人惊叹的。很抱歉,我在最初的问题中只给出了两个选项,但假设我有20个不同的选项,我是否应该使用一个开关或一堆if-else语句来设置路径?您可以使用switch
或if…else
(有等效项)。您还可以将保存的项作为文件名(例如,color:“green”
指的是名为green.css
等的文件),这样代码就不会那么混乱了:var color=localStorage.getItem(“color”);var路径=颜色?颜色+“.css”:“default.css”代码>我将其标记为已接受,因为它确实解决了我应用不同CSS文件的问题。谢谢你,伙计。但不能提高投票率,声誉不够。太棒了。很抱歉,我在最初的问题中只给出了两个选项,但假设我有20个不同的选项,我是否应该使用一个开关或一堆if-else语句来设置路径?您可以使用switch
或if…else
(有等效项)。您还可以将保存的项作为文件名(例如,color:“green”
指的是名为green.css
等的文件),这样代码就不会那么混乱了:var color=localStorage.getItem(“color”);var路径=颜色?颜色+“.css”:“default.css”代码>我将其标记为已接受,因为它确实解决了我应用不同CSS文件的问题。谢谢你,伙计。但不能提高投票率,声誉不够。太棒了。很抱歉,我在最初的问题中只给出了两个选项,但假设我有20个不同的选项,我是否应该使用一个开关或一堆if-else语句来设置路径?您可以使用switch
或if…else
(有等效项)。您还可以将保存的项作为文件名(例如,color:“green”
指的是名为green.css
等的文件),这样代码就不会那么混乱了:var color=localStorage.getItem(“color”);var路径=颜色?颜色+“.css”:“default.css”代码>我将其标记为已接受,因为它确实解决了我应用不同CSS文件的问题。谢谢你,伙计。但不能提高投票率,声誉不够。太棒了。很抱歉,我在最初的问题中只给出了两个选项,但假设我有20个不同的选项,我是否应该使用一个开关或一堆if-else语句来设置路径?您可以使用switch
或if…else
(有等效项)。您还可以将保存的项作为文件名(例如,color:“green”
指的是名为green.css
等的文件),这样代码就不会那么混乱了:var color=localStorage.getItem(“color”);var路径=颜色?颜色+“.css”:“default.css”代码>我将其标记为已接受,因为它确实解决了我应用不同CSS文件的问题。谢谢你,伙计。但不能提高投票率,声誉不够。