Niedawno znalazłem (na so.com w tej sprawie) Nifty Little Funkcja konwertuje wartość RGB do korespondenta sześciokątnego. Jako argument, przekazuję wartości atrybutów CSS "Kolor" (np.: "RGB (45,187,251)"). Oto funkcja:

function rgb2hex(rgb) {
    rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
    function hex(x) {
        return ("0" + parseInt(x).toString(16)).slice(-2);
    }
    return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}

Działa idealnie w Chrome, ale konsola Firebug w Firefoksie podaje następujący błąd:

RGB ma wartość null.

Wróć "#" + hex (RGB 1) + HEX (RGB [2]) + HEX (RGB [3]);

Dlaczego to się dzieje?

Możesz go zobaczyć w użyciu na bramkańcandy.com. Wystarczy nacisnąć "Start TERAZ", a następnie kliknij "Zapisz" po lewej stronie ekranu i obejrzyj konsolę Firebug.

2
Andrei Oniga 10 sierpień 2012, 22:22

2 odpowiedzi

Najlepsza odpowiedź

Śledzenie jednak na tej stronie za pomocą Firebug, w telefonie

data += rgb2hex(jqMesh.css('border-color')) + '|'

W linii 1516 - połączenie do jqMesh.css('border-color') zwraca pusty ciąg.

Wywołanie jqMesh.css('color') W konsoli Firebug podczas zatrzymania się w tym punkcie przerwania zwrotu "RGB (68, 68, 68)"

1
Stephen P 10 sierpień 2012, 18:40

Okazało się, że nie ma problemu z funkcją RGB2HEX () , ale raczej z metodą JQUERY'S CSS () w Firefoksie. Mianowicie, w Firefoksie, dzwoniąc .CSS ("Color Border-Color") Zwraca wartość pustką, w przeciwieństwie do .CSS ("Border-Top-Color") na przykład . Chrome też rozumie pierwszą wersję.

1
Andrei Oniga 10 sierpień 2012, 19:14