0

我有一个来自 texarea 的字符串,现在我想知道该字符串是否是此处的 HTML 颜色名称之一)。我知道我可以简单地将我的字符串与每个字符串进行比较,但这会占用相当多的空间并且不是很好。有没有像 iscolorname(color) 这样的函数?还是我不会检查每一个?

4

2 回答 2

1

这个问题提供了一些部分答案:Javascript function to convert color names to hex codes

一个完整的:您可以简单地创建一个内存画布并执行以下操作:

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 颜色的字符串,也可以是 CanvasGradient 或 CanvasPattern 对象。无效值将被忽略。

(来自http://www.w3.org/TR/2dcontext/#dom-context-2d-fillstyle

于 2012-06-07T16:00:53.887 回答
0

您可以尝试设置颜色并将其读回。除了 IE 之外的浏览器会忽略无效颜色,如果您设置了无效属性,较旧的 IE 会抛出一个错误,您可以捕捉到该错误。

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

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')
于 2012-06-07T18:01:07.773 回答