Javascript 如何在不必检查每个颜色名称的情况下找出某个颜色名称是否是HTML颜色名称之一?

Javascript 如何在不必检查每个颜色名称的情况下找出某个颜色名称是否是HTML颜色名称之一?,javascript,html,colors,Javascript,Html,Colors,我有一个来自texarea的字符串,现在我想知道该字符串是否是HTML颜色名称之一)。我知道我可以简单地将我的字符串与每个字符串进行比较,但这会占用相当多的空间,而且不是很好。是否有类似iscolorname(颜色)的函数? 或者,我是否可以抽空检查每一个问题?这个问题提供了一些部分答案: 完整的:您只需创建内存画布并执行以下操作: if (suspectedColor.indexOf('(')>=0 || suspectedColor.indexOf('#')>=0) { /

我有一个来自texarea的字符串,现在我想知道该字符串是否是HTML颜色名称之一)。我知道我可以简单地将我的字符串与每个字符串进行比较,但这会占用相当多的空间,而且不是很好。是否有类似iscolorname(颜色)的函数?
或者,我是否可以抽空检查每一个问题?

这个问题提供了一些部分答案:

完整的:您只需创建内存画布并执行以下操作:

if (suspectedColor.indexOf('(')>=0 || suspectedColor.indexOf('#')>=0) {
   // see http://www.w3.org/TR/2dcontext/#dom-context-2d-fillstyle
   isColorName = false;
} else {
    context.fillStyle = suspectedColor;
    isColorName = context.fillStyle!="#000000" ; // ok, I let as an exercice the check that colorName isn't black
}
这是因为:

上下文。fillStyle[=value]返回用于 填充形状

可以设置,以更改填充样式

样式可以是包含CSS颜色的字符串,也可以是 画布渐变或画布图案对象忽略无效值。


(从)

您可以尝试设置颜色并读回。 浏览器会忽略无效的颜色, 老的IE抛出一个你能抓住的错误 如果设置了无效的属性

(如果经常使用,请改用对象测试。)


您使用的是什么框架,取决于框架这可能是可能的,也可能是不可能的据我所知,检查很容易,只要一行
if($htmlcolors[$htmlcolorname])…
,其中$htmlcolors数组的颜色名称作为键,颜色值作为值,我正在用javascript编码。所以我得到了浏览器的所有默认javascript函数。你似乎知道这个问题是重复的-为什么不回答原始问题呢?因为事实上这不是重复的(我花了一点时间才看到)。我把这个老问题联系起来,因为它可以帮助找到一些答案(不是我的),但它不能直接回答。例如,您必须检查(因此我给出了参考)字符串是否不仅仅是“#aaa”或“rgba(1,1,1,1)”。现在我使用链接帖子上提供的数组,因为它允许我在稍微修改它时添加自定义颜色名称。如果我希望我的用户能够使用rgb(0,0,0)或rgba,我也可以使用fillStyle。
function validColor(cstring){
    var check= false, dummy= document.createElement('span');
    try{
        dummy.style.color= cstring;
        return !!dummy.style.color;
    }
    catch(er){
        return false;
    }
    finally{
        dummy= null;
    }
}
validColor('reddish')