Почему Firefox 3 нарушает работу с console.log
У меня есть следующее:
console.log (a.time_ago() + ' ' + b.time_ago());
Это нарушение FireFox 3, что означает, что FF попадает в эту строку в JS, это не идет дальше. Как ни странно, если я открываю Firebug, он не прерывается и продолжается как обычно. Каким образом firebug предотвращает эту проблему?
Я озадачен этим. Любые мысли о том, почему console.log разбивает firefox 3, но не открывается ли firebug?
Спасибо
Ответы
Ответ 1
Это не просто Firefox. Ваш код перестанет работать в каждом браузере (за исключением Chrome и Safari (в некоторых случаях), потому что у них есть console.log(), встроенный вместе со своими инструментами для разработчиков.)
Это потому, что когда у вас нет firebug open, объект "console" не определен. Вам следует позаботиться о том, чтобы никогда не покидать функции console.log() в вашем коде, иначе он будет разбит в каждом браузере.
Я хотел бы добавить, что иногда использовал эту функцию:
function log () {
if (typeof console == 'undefined') {
return;
}
console.log.apply(console, arguments);
}
Затем вы можете просто вызвать:
log(somevar, anothervar);
и он будет работать так же, как и console.log, но не сработает, если firebug не загружен (и короче для ввода: P)
Приветствия
Ответ 2
Если этот firebug закрыт, я перезаписываю объект консоли. Таким образом, вы можете реализовать резервные функции...
console = console || { log : function() {
// place your logging code here, if firebug is closed
}, debug : function() {
// place your debug code here, if firebug is closed
} /*, [ and so on .. ] */ };
Привет,
Dyvor
Ответ 3
В FireFox, если консоль не открыта, когда вы вызываете ее, выдается ошибка JavaScript.
Я переношу весь свой console.log в оболочку, чтобы проверить консоль - вы можете либо обернуть проверку вокруг консольного вызова, либо использовать другое имя в консоли псевдонимов.
Искажения
/* konsole is a safe wrapper for the Firebug console. */
var konsole = {
log: function(args){},
dir: function(args){},
debug: function(args){},
info: function(args){},
warn: function(args){},
error: function(args){}
};
// Remove below here when in production
if (typeof window.console != 'undefined' && typeof window.console.log == 'function') {
konsole = window.console;
}
konsole.log('testing debugging');
konsole.error('throw an error message to the console');
Проверить консоль
if (typeof window.console != 'undefined' && typeof window.console.log == 'function') {
console.log('testing debugging');
console.error('throw an error message to the console');
}
Ответ 4
Я всегда делаю проверку if (console)
, чтобы убедиться, что консоль фактически существует. Если firebug не открыт, как будто вы действуете на нулевой объект, то почему он ломается.
Ответ 5
В Firefox нет консольного объекта. Firebug добавляет один.
Простое исправление - открыть firebug для разработки и удалить инструкции console.log для развертывания.
вы также можете создать пользовательскую функцию журнала, например
function log (msg)
{
if(console)
{
console.log(msg);
}
}
который будет регистрироваться только в том случае, если консоль существует
Ответ 6
Чтобы Firefox 3.0 не жаловался, надежно используйте следующее...
if ('console' in window) {}