Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何判断fillStyle是否被指定为非法颜色?

如何判断fillStyle是否被指定为非法颜色?
EN

Stack Overflow用户
提问于 2017-06-02 13:41:58
回答 3查看 338关注 0票数 2

假设有人试图按以下方式分配

var c = document.getElementById("canvasID"); var g = c.getContext("2d"); g.fillStyle = "pukeYellow"; //illegal color

这能被发现吗?g.fillStyle是否成为某种前哨值?

假设您正在编写一个web应用程序,该应用程序要求用户提供一个命名的颜色,然后显示该颜色。我们怎么能告诉用户他犯了错误?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-02 14:53:42

根据HTML画布2D上下文规范

8填充和笔画样式 如果该值是字符串,但不能解析为CSS值,或者既不是字符串、CanvasGradient,也不是CanvasPattern,则必须忽略,并且属性必须保留其以前的值。

我假设您只对有效的CSS颜色值如这里所定义的感兴趣。至少有三个选项可以验证CSS颜色值:

  • 通过比较分配前后的context.fillStyle,如果两者相等,则用户提供了相同或无效的颜色值。
  • 通过人工验证: const colors =新集(“aliceblue”、"antiquewhite“、"aqua”、"aquamarine“、"azure”、"beige“、"bisque”、"black“、"blanchedalmond”、"blue“、”blue紫色“、"brown”、“bur坞”、"cadetblue“、"chartreuse”、“巧克力”、“珊瑚”、"cornflowerblue“、”corn丝绸“、"crimson”、"cyan“、”深蓝色“、”深蓝色“、”深色金棒“、”深灰色“、“深绿色”、“深灰色”、“深色卡其基”、“深色洋红色”、“深橄榄绿色”、“深色橙色”、“暗兰花”、“暗红色”、“深色鲑鱼”、“暗色海蓝”、“深石蓝”、“深灰色”、“深灰色”、“深灰色”、“深红色”、“深蓝色”、“灰灰色”、“灰灰”、“多德格尔蓝”、“耐火砖”、“花白色”、“前绿色”、“未来”、“盖恩斯伯罗”、“幽灵白色”,“黄金”、“金棒”、“灰色”、“绿色”、“灰色”、“蜜露”、“火红”、“深红”、“靛蓝”、“象牙”、“卡其色”、“薰衣草”、“薰衣草”、“草坪绿”、“柠檬皮”、“蓝光蓝”、“轻珊瑚”、“轻盈青色”、“淡金色”、“淡灰色”、“淡绿色”、“淡灰色”、“淡粉色”、“轻鲑鱼”、“轻色鱼”、“亮蓝色”、“浅灰色”、“浅蓝色”、“浅蓝色”、“淡黄色”、“石灰”、“灰绿色”、“亚麻布”、“洋红”、“栗色”、“中蓝色”、“中蓝色”、“平庸”、“平庸兰花”、“中紫色”、“中色色”、“中色蓝”、“中绿色”、“中青绿色”、“中青绿色”、“中紫红色”、“夜蓝色”、“薄荷霜”、“迷迭香”、“莫卡辛”、“纳瓦乔白”、“海军”、“海军蓝”、“海军蓝”“橄榄”、“橙色”、“桔黄色”、“兰花”、“棕榈”、“古绿色”、“古绿松石”、“古紫罗兰”、“木瓜鞭”、“桃红色”、“秘鲁”、“粉红色”、“李子”、“粉蓝色”、“紫色”、“重贝克尔”、“红色”、“玫瑰色”、“皇家蓝”、“鞍棕色”、“鲑鱼”、“沙褐色”、“塞格伦”、“塞什尔”、“西耶纳”“银色”、“天蓝色”、“蓝蓝”、“蓝灰色”、“蓝灰色”、“雪”、“春绿”、“钢蓝”、“褐色”、“提尔”、“蓟”、“番茄”、“绿松石”、“紫罗兰”、“小麦”、“白色”、“白烟”、“黄色”、“黄绿色”);colors.has(input.toLowerCase());
  • 通过设置和检查临时HTMLElement的样式

我推荐前两种解决方案之一。

票数 2
EN

Stack Overflow用户

发布于 2017-06-02 14:22:11

实验揭示了这一点。如果您指定了一个非法的颜色,则分配就会失败。图形上下文的状态不变。JavaScript,就像它的典型风格一样,只是忽略了你的错误,继续前进。您还可以尝试这个web应用程序中的颜色。这个应用程序还会显示与十六进制代码相关的颜色,如果你在十六进制代码前面加上#。

票数 0
EN

Stack Overflow用户

发布于 2017-06-02 14:24:34

无效的颜色字符串将被解释为最后的有效颜色(或#000000,黑色)。

对于大多数的应用程序来说,这段代码应该是最合适的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var canvas = document.createElement("canvas")
var context = canvas.getContext("2d")
context.fillStyle = "#ff0000"
console.log(testColor("yellow"))
console.log(testColor("pukeYellow"))
console.log(testColor("red"))
console.log(context.fillStyle)

function testColor(color){
    var tmp = context.fillStyle
    context.fillStyle = color
    var result = context.fillStyle == tmp
    if(result){
        var tmp2 = tmp == '#ffffff' ? '#000000' : '#ffffff'
        context.fillStyle = tmp2
        context.fillStyle = color
        result = (context.fillStyle+'') == (tmp2+'')
    }
    context.fillStyle = tmp
    return !result
}

警告:仅在chrome!上测试

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44337821

复制
相关文章
【快问快答】如何判断OJVM是否被使用?
本文作者系肖遥(花名),现任甲骨文技术支持工程师 ,目前专注于Oracle RAC领域。个人主页:
SQLplusDB
2022/08/19
5730
HTML5填充颜色的fillStyle测试
效果: http://hovertree.com/texiao/html5/canvas/1/
全栈程序员站长
2022/07/15
1.6K0
C#判断文件是否被混淆
可以使用混淆工具对一个DLL 和 exe 进行混淆。 但是如何知道一个文件是否已经混淆了。 在发布之前,需要知道是不是有文件忘了混淆。
林德熙
2018/09/18
2.3K0
Linux如何判断自己的服务器是否被入侵
如何判断自己的服务器是否被入侵了呢?仅仅靠两只手是不够的,但两只手也能起到一些作用,我们先来看看UNIX系统上一些入侵检测方法,以LINUX和solaris为例。
小小科
2019/07/15
3K0
Linux如何判断自己的服务器是否被入侵
如何判断自己的服务器是否被入侵了呢?仅仅靠两只手是不够的,但两只手也能起到一些作用,我们先来看看UNIX系统上一些入侵检测方法,以LINUX和solaris为例。 1、检查系统密码文件 首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。 检查一下passwd文件中有哪些特权用户,系统中uid为0的用户都会被显示出来。 顺便再检查一下系统里有没有空口令帐户: 2、查看一下进程,看看有没有奇怪的进程 重点查看进程: ps –aef | grep i
小小科
2018/05/04
3.6K0
Linux如何判断自己的服务器是否被入侵
js判断非法日期对象
使用getTime()方法将日期对象转换成毫秒。 如果日期对象非法,getTime方法将会返回NaN。 因此判断逻辑如下: function isValidDate(d) { return d instanceof Date && !isNaN(d); } 实际案例: if(!isNaN(new Date("2012/25/255").getTime())) console.log('valid date time'); console.log('Not a valid date time');
IT工作者
2021/12/28
12.9K0
[工具]如何判断一个颜色是什么颜色?
这个颜色如何拿来为自己的PPT/Power BI报告所用?词汇毕竟匮乏,要知道“红色”就不止几十种。今天介绍的ColorPix这款取色器或许可以帮上你的忙。
wujunmin
2021/09/07
9830
[工具]如何判断一个颜色是什么颜色?
ThinkPHP3.2.3判断变量是否被定义(变量是否存在)
一:判断变量是否存在 传入数组 $this->assign('sel',$sel); 模板判断 <input name="tel" type="text" value="<present name="sel['l_ptel']">{$sel['m_ptel']}<else />222222222</present>"> 注意name="sel['l_ptel']"中不使用 切换存在的变量 <input name="tel" type="text" value="<present name="sel['m
botkenni
2022/01/10
1.3K0
ThinkPHP3.2.3判断变量是否被定义(变量是否存在)
判断网站是否被百度收录
引用教程: <?php //判断内容页是否百度收录 function baidu($url){ $url='http://www.baidu.com/s?wd='.$url; $curl=curl_
Youngxj
2018/06/07
1.4K0
python判断文件后缀_Python 判断文件后缀是否被篡改
“255044462D312E”: [“Adobe Acrobat”, [“.pdf”]],
全栈程序员站长
2022/11/04
2.4K0
dotnet Open XML 如何判断一份 Office 文档是否被加密
在拿到一份 PPTX 文档,或一份 Word 的 docx 文档,如何判断这份文档是被加密的
林德熙
2020/09/24
1.4K0
dotnet Open XML 如何判断一份 Office 文档是否被加密
如何判断电脑是否激活
想知道电脑是否激活其实并不难知道,用鼠标右键在“此电脑”上选择属性,能够直接看到Windows的激活状态。
java后端指南
2021/05/13
3.7K0
如何判断电脑是否激活
JavaScript如何判断是否为数字?
isNaN()函数是js自带的全局函数,isNaN() 函数用于检查其参数是否是非数字值。
全栈程序员站长
2022/09/07
2.5K0
如何判断Javascript对象是否存在
Javascript语言的设计不够严谨,很多地方一不小心就会出错。 举例来说,请考虑以下情况。 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下:   if (myObj不存在){     声明myObj;   } 你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分
ruanyf
2018/04/12
2.8K0
如何判断自己是否适合当前公司?
昨天讲的窄化效应,实际是告诉你:“不要在自己有情绪的情况下做决定,也不要在别人有情绪的时候找人沟通决策”
石云升
2022/08/25
7790
如何判断对象是否为垃圾
我们都Java会自动进行内存管理,JVM会进行垃圾回收,哪它是怎么判定哪些是“垃圾”并决定“垃圾”的生死呢?
索码理
2022/12/28
1.2K0
如何判断对象是否为垃圾
如何判断 Activity 上是否有弹窗
今天来看个需求,如何判断 Activity 上面是否有弹窗,当然,简单的方式肯定有,例如在 Dialog show 的时候记录一下,但这种方式不够优雅,我们需要一款更通用的判断方式。
codelang
2022/11/30
3.3K0
如何判断 Activity 上是否有弹窗
python 如何判断字典是否为空?
在python里,{},[],(),等都等价于False! if dict: print 'not Empty'
py3study
2020/01/09
21.3K0
点击加载更多

相似问题

fillStyle颜色的过渡

14

如何判断组件是否被销毁?

22

如何判断颜色是否为绿色?

14

如何判断UITableViewCell是否被拖拽?

42

如何判断rgb颜色是否太浅

38
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文