Javascript 我可以依赖元素的颜色吗?

Javascript 我可以依赖元素的颜色吗?,javascript,jquery,css,browser,colors,Javascript,Jquery,Css,Browser,Colors,我的代码中有很多这样的条件:基于元素颜色的条件 最近我听说: 依赖颜色的元素是错误的。因为不同的浏览器返回不同的颜色。比如: rgb 0,0,0 000000 黑色 这是真的吗?无论如何,正如我所说,我的JS代码中有很多类似于上面的条件,现在我不知道该怎么办。有什么建议吗 注意:更改代码中的所有这些条件似乎是一场噩梦- 您可以将此RGB颜色分析器用于JavaScript: 从站点使用的示例: var color = new RGBColor('darkblue'); if (color.ok)

我的代码中有很多这样的条件:基于元素颜色的条件

最近我听说:

依赖颜色的元素是错误的。因为不同的浏览器返回不同的颜色。比如:

rgb 0,0,0 000000 黑色 这是真的吗?无论如何,正如我所说,我的JS代码中有很多类似于上面的条件,现在我不知道该怎么办。有什么建议吗


注意:更改代码中的所有这些条件似乎是一场噩梦-

您可以将此RGB颜色分析器用于JavaScript:

从站点使用的示例:

var color = new RGBColor('darkblue');
if (color.ok) { // 'ok' is true when the parsing was a success
    // alert channels
    alert(color.r + ', ' + color.g + ', ' + color.b);
    // alert HEX and RGB
    alert(color.toHex());
    alert(color.toRGB());
}

我不会依赖任何基于UI的值,尤其是如果这是一个重要的项目,您希望保持无bug。使用CSS值(如颜色)也会使应用程序在将来容易出错,因为如果您引入了具有要检查的某些属性的元素,您的检查可能会失败

您还将取决于颜色,因此如果颜色毕竟不能满足您的需要,您需要更改它,那么您也必须更改颜色检查代码

当然,在返回元素颜色属性的方式上,浏览器尤其是JavaScript库可能存在差异,因此如果您决定使用这种颜色检查方式,您也需要考虑这些差异,这并不一定比更改您当前担心必须重写的所有代码快

使用UI的状态来检查某些东西,不管它是否重要,也有点愚蠢-请考虑以下场景:

您正在开发一个在线书店,在那里用户可以选择书到他们的购物篮,然后购买它们。在购买之前,用户必须通过从银行账户向书店账户转账来填补书店账户余额

退房时,有一个大的退房按钮,只有当用户的书店帐户上有足够的钱时,它才可见,否则它是不可见的

每次按下按钮,它都会调用一个函数getBooks,该函数会将用户重定向到一个页面,该页面显示这些书正在路上!并通知您有人买了一些书,您需要开始包装和张贴这些书

现在,这里怎么了?显然,如果用户的书店帐户上没有足够的钱,用户就无法按下按钮,因为按钮是不可见的。。。但是,如果用户比这聪明一点,检查结帐页面一段时间,发现他/她只需要调用getBooks函数就可以获得书籍,而不管他/她在书店帐户上是否有钱,因为如果用户帐户上没有钱,你只能依赖不显示按钮


这是一个大问题,我不知道这种编程失败的正式名称,但它被称为UI阻塞、UI操作阻塞或UI安全。这通常发生在MMO游戏中的供应商NPC上——你点击供应商,弹出一个窗口,从那里你可以购买物品,所有你没有钱购买的物品的购买按钮都被禁用并变灰。您的游戏内资金并不总是在服务器端检查,因此您可以购买所有项目,无论您是否有钱,只要您知道要调用哪个购买按钮的功能,因为您不能按按钮本身。

您是否在css和javascript中使用rgb 0,0,0,000000和黑色?@guest271314否,我总是在CSS代码中只使用这种颜色:rgb 0,0,0。是的,不幸的是这是真的。有一个jquery插件可以转换为不同的符号或从不同的符号转换而来。没有自动取款机,但我会找it@MartinAJ不,我总是在我的CSS代码中使用这种颜色:rgb 0,0,0$elmnt.csscolor是否返回预期结果?答案是否定的,当涉及到颜色时,您永远不应该依赖javascript返回特定格式。除了问题中提到的那些,更新的浏览器可以返回RGBA、HSL等等,你不知道将来会发生什么。这个答案很酷。我编写代码已经快两年了,但我还没有遇到过这种情况。谢谢你的知识。干杯+1这其中大部分与问题没有直接关系。与此相关的内容会比answer@DelightedD0D你可能是对的,我可能有点离题了。然而,问题是人们是否可以依赖元素颜色,在我看来,这已经得到了回答,并解释了为什么依赖颜色或其他基于UI的值是一个坏主意。这似乎是一个公平的观点。但是,老实说,您没有引用任何关于检查元素颜色的可靠性的真实信息。你真的只是在讨论为什么你要用UI的状态来检查一些东西,不管它是否重要,这有点愚蠢。这给了我们你的意见,但没有解决实际问题
我很高兴,这很公平。另一方面,MVC模型存在的原因之一是专门将UI与应用程序的业务逻辑分离,例如,为了解决类似这样的问题。没错,但MVC并不是一颗神奇的子弹。作为一个设计的例子,考虑OP是否有一个应用程序,允许用户改变特定div的背景颜色。OP可以写一个检查,如果用户将背景颜色更改为黑色,则自动将文本颜色更改为白色,这样文本仍然可见。显然,要解决这样一个微不足道的问题,MVC还有很长的路要走。在这种情况下检查UI状态是有意义的。
var color = new RGBColor('darkblue');
if (color.ok) { // 'ok' is true when the parsing was a success
    // alert channels
    alert(color.r + ', ' + color.g + ', ' + color.b);
    // alert HEX and RGB
    alert(color.toHex());
    alert(color.toRGB());
}