Какие браузеры поддерживают console.log()?
Поддерживаются ли все браузеры? Я хотел бы вывести ошибку, используя console.log()
, но задавался вопросом, поддерживается ли это всеми браузерами?
console.log("Error etc");
Ответы
Ответ 1
Нет, не все браузеры поддерживают console.log
, поскольку он не является частью стандарта и является расширением DOM, и поэтому вы не должны рассчитывать на его присутствие. Чтобы сделать ваш код устойчивым, вы должны предположить, что он не существует и код соответственно.
Ответ 2
В прошлом я делал что-то вроде этого:
// Log to native console if possible, alert otherwise
window.console = typeof window.console === 'undefined'
? {log:function(/* polymorphic */){alert(arguments)}}
: window.console;
Вы можете поместить это в "верх" вашего JS, и он работает очень хорошо, когда вы вынуждены выполнять отладку с браузером, который не поддерживает console
, и не требует, чтобы вы меняли другого источника JS, который уже вызывает console.log
повсюду. Конечно, вы можете захотеть сделать что-то другое, кроме alert
, чтобы сохранить свое правоту...
http://jsfiddle.net/4dty5/
Ответ 3
Большинство браузеров делают, однако Internet Explorer 9 имеет проблемы с ним, где он не запускает какой-либо javascript, если у вас нет окна отладки. Потребовались часы, чтобы найти решение этой проблемы.
Ответ 4
Сделайте функцию обертки:
function log(text) {
if (window.console) {
window.console.log(text);
}
}
Ответ 5
Сейчас август 2015 года, и я думаю, что текущий ответ на этот вопрос:
Все основные браузеры для мобильных и настольных компьютеров console.log. (caniuse)
Он не является частью какого-либо стандарта, но теперь он является ожидаемым результатом полного современного браузера.
Однако:
Если вам необходимо поддерживать старые браузеры (IE < 10), больше мобильных браузеров или пользователей, работающих с экспериментальными браузерами, тогда может быть хорошей идеей использовать polyfill (1, 2, 3, 4), чтобы обеспечить window.console
.
Он может не работать в WebWorkers во всех браузерах. (MDN)
В Opera Mini функции будут запущены, но вы не увидите результат. (caniuse)
Но для подавляющего большинства пользователей Интернета, мы можем предположить, что console.log
будет работать как ожидалось.
Ответ 6
Этот код проверяет, существует ли эта функция и создает фиктивный файл, если это не так. Кредит: fooobar.com/questions/5801/...
if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
Ответ 7
Вот обходной путь, когда console.log()
недоступен. Вы должны сами взять console.logs
.
if (!window.console) window.console = {};
if (!window.console.log)
{
window.console.logs = [];
window.console.log = function (string)
{
window.console.logs.push(string);
};
}
Ответ 8
Хотя не все браузеры поддерживают это, это может быть выполнено с небольшим количеством кода.
В своей книге "Тайны Javascript Ninja" Джон Ресиг (создатель jQuery) имеет действительно простой код, который будет обрабатывать проблемы с кросс-браузером console.log
. Он объясняет, что он хотел бы иметь сообщение журнала, которое работает со всеми браузерами, и вот как он закодировал его:
function log() {
try {
console.log.apply(console, arguments);
} catch(e) {
try {
opera.postError.apply(opera, arguments);
}
catch(e) {
alert(Array.prototype.join.call( arguments, " "));
}
}