Вы не указываете, какие результаты вы фактически получаете в IE <9 (некоторые примеры ввода и строки результатов, которые вы считаете неудачными, были бы особенно полезны), поэтому все, что я могу сделать, это сделать предположение: </p>
Вы используете parseInt()
, а реализация parseInt()
изменена в IE9. (На самом деле, это изменилось в ECMAScript5, но IE не догонял это до версии 9.)
Как указано здесь: http://msdn.microsoft.com/en-us/library/windows/apps/x53yedee(v=vs.94).aspx
Начиная со стандартного режима Internet Explorer 9, функция parseInt не обрабатывает строку с префиксом «0» как восьмеричную.
Очевидно, это означает, что если ваши значения rgb содержат начальные нули, вы получите разные результаты в зависимости от версии браузера. Предположительно, вы хотите рассматривать числа как основание 10; это легко исправить, изменив функцию hex()
:
return ("0" + parseInt(x, 10).toString(16)).slice(-2);
// add radix here --------^
Если ваши значения rgb не содержат начальных нулей, как насчет того, чтобы обновить свой вопрос, включив в него всю информацию?