Подтвердить что ты не робот

Почему Firefox 3 нарушает работу с console.log

У меня есть следующее:

console.log (a.time_ago() + ' ' + b.time_ago());

Это нарушение FireFox 3, что означает, что FF попадает в эту строку в JS, это не идет дальше. Как ни странно, если я открываю Firebug, он не прерывается и продолжается как обычно. Каким образом firebug предотвращает эту проблему?

Я озадачен этим. Любые мысли о том, почему console.log разбивает firefox 3, но не открывается ли firebug?

Спасибо

4b9b3361

Ответ 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) {}