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