Любой способ определить, может ли консоль браузеров отображать цвета?

Есть ли способ проверить, может ли браузер использовать цвета консоли без обнюхивания?

console.log('%c Oh my heavens! ', 'background: #222; color: #bada55');

Например, в chrome 26+ и firebug будет напечатан цветной вывод.

Ответ 1

Это один из этих немногих случаев, когда обнаружение версии браузера кажется правильным. Чтобы свести к минимуму опасность такого подхода, не забудьте использовать черный список, а не белый список, независимо от того, насколько неинтуитивно это может показаться прямо сейчас (чтобы убедиться, что вы не оставляете новый будущий браузер, как это случилось с большим количеством старого кода, сфокусированного на netscape). Я знаю, что это не тот ответ, который вы хотели бы услышать, но поскольку console.log является нативной функцией, и это действие никак не может наблюдаться, поскольку, насколько я вижу, единственным вариантом является обнаружение версии браузера,

Ответ 2

Я написал Console.js https://github.com/icodeforlove/Console.js, чтобы позволить нам сделать это немного легче

Console.styles.register({
  red: 'color: red',
  underline: 'text-decoration: underline',
  bold: 'font-weight: bold'
});

тогда вы можете просто сделать это

console.log('red text '.red + 'red underlined text'.red.underline + 'red bold text'.red.bold);

он грациозно деградирует, как этот

console.js example