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