Максим Черепанцев: если вы просто кладёте градиент в background-image контейнера, то конечно градиент у вас будет слоем ниже чем текст. Парни, которые привели примеры, кладут градиент на абсолютно позиционированные внутри контейнера элементы.
Татьяна Осадченко: я много времени потратил на это, поэтому надеюсь вы не расстроитесь) Я разобрал код, дал переменным относительно читаемые названия, опираясь на то, как используется переменная в контексте. Некоторые неявные конструкции разобраны, например присвоения в блоке условия (if) и сокращенные условия (a || b()). При разборе будет полезно знать что такое chrome.cookies, notifications и runtime.
GreatRash: там по ходу всей этой мутоты не просто кодировка была, а еще подготовка переменных, поэтапная сборка. Так что чтобы конечный код работал, надо не просто раскодировать, а еще выполнять те части которые ответственны за подготовку
Ну само собой JS может всё, и нет никаких непреодолимых сложностей сделать алгоритм кроссбраузерным. Но разве у вас на всех перечисленных браузерах не работает grey через SVG? Например так