На самом деле я попытался ответ Чарли Килиана . По какой-то причине это не сработало, когда вы пытаетесь установить .css('color')
с помощью значения 'rgb (0,0,0)'.
Я не знаю почему. Отлично работал в консоли. Возможно, это потому, что моя функция сравнения находится в объекте javascript, и это своего рода проблема контекста или проблемы со ссылками. В любом случае, в конце концов я разочаровался и написал свою собственную функцию, которая будет сравнивать два цвета независимо от форматов и не создавать никаких элементов или полагаться на jQuery. Функция принимает значения HEX и RGB.
Возможно, это можно оптимизировать, но сейчас у меня действительно нет времени. Надеюсь, что это поможет кому-то его чистый JavaScript.
var compareColors= function (left, right) {
var l= parseColor(left);
var r=parseColor(right);
if(l !=null && r!=null){
return l.r == r.r && l.g == r.g && l.b == r.b;
}else{
return false;
}
function parseColor(color){
if(color.length==6 || color.length==7){
//hex color
return {
r:hexToR(color),
g:hexToG(color),
b:hexToB(color)
}
}else if(color.toLowerCase().indexOf('rgb')>-1){
var arr
var re = /\s*[0-9]{1,3}\s*,\s*[0-9]{1,3}\s*,\s*[0-9]{1,3}\s*/gmi;
var m;
if ((m = re.exec(color)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
arr = m[0].split(',');
return {
r: parseInt(arr[0].trim()),
g: parseInt(arr[1].trim()),
b: parseInt(arr[2].trim())
}
}else{
return null;
}
} else{
return null;
}
function hexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function hexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function hexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}
}
}
Эти следующие функции я взял с www.javascripter.net
function hexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function hexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function hexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}