JavaScript getComputedStyle 不适用于颜色名称?



我只是问我做错了什么,因为我以前做,我只是不记得怎么做,我一定丢失了旧代码。

Firefox 有一个名为-moz-win-accentcolor的未记录颜色值,可用于获取 Windows 10 强调文字颜色。

如果我直接在样式表中使用该颜色名称(在我的扩展中,以匹配系统的主题(,它工作正常,但我需要稍微变暗或变亮颜色,如果不获取颜色数据本身,我就无法做到这一点。

这就是我所拥有的,我正在使用window.getComputedStylegetPropertyValue来获取颜色数据。我不在乎它是十六进制还是RGBA,见鬼,我不在乎它是二进制的。我只需要能够赋予颜色来操作颜色数据。

function getComputedAccent() {
let fakeEl = document.createElement("div");
fakeEl.style = "background: -moz-win-accentcolor";
return window.getComputedStyle(fakeEl).getPropertyValue("background");
}

但这只返回一个空字符串。知道我忘记了什么吗?

(是的,我知道这是一个黑客,我不在乎。

好吧,我太笨了。代码确实有效,但稍作更改。

function getComputedAccent() {
let fakeEl = document.createElement("div");
fakeEl.style = "background-color: -moz-win-accentcolor";
return window.getComputedStyle(fakeEl).getPropertyValue("background-color");
}
getComputedAccent()
"rgb(55, 60, 72)"

它使用空字符串进行响应,因为background属性并不总是一种颜色。它可以是图像。将其更改为background-color,您就没事了。


已编辑以添加更多有用的代码。

function getComputedAccent() {
let fakeEl = document.createElement("div");
fakeEl.setAttribute("style", "background-color: -moz-win-accentcolor");
let color = window.getComputedStyle(fakeEl).getPropertyValue("background-color");
color = color.match(/rgb((d+)s*,s*(d+)s*,s*(d+)s*)/);
color.shift();
color = color.map((value) => parseInt(value, 10));
return color;
}

最新更新