Почему Firefox 3 ломается с console.log

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

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

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

Я озадачен этим. Любые мысли о том, почему console.log может сломать Firefox 3, но не если Firebug открыт?

Спасибо

6 ответов

Решение

Это не просто Firefox. Ваш код перестанет работать во всех браузерах (кроме Chrome и Safari (в некоторых случаях), потому что в них встроен console.log() вместе с инструментами разработчика).

Это потому, что когда у вас нет открытого firebug, объект "console" не определен. Вы должны быть осторожны, никогда не оставляйте функции console.log() в своем коде, иначе это сломается во всех браузерах.


Я хотел бы добавить, что я иногда использовал эту функцию:

function log () {
    if (typeof console == 'undefined') {
        return;
    }
    console.log.apply(console, arguments);
}

Тогда вы можете просто позвонить:

log(somevar, anothervar);

и он будет работать так же, как console.log, но не потерпит неудачу, если firebug не загружен (и короче, чтобы набрать:P)

ура

В случае, если этот 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

В FireFox, если консоль не открыта, когда вы вызываете ее, выдается ошибка JavaScript.

Я проверяю все свои console.log в оболочке, чтобы проверить консоль - вы можете либо обернуть проверку вокруг вызова консоли, либо использовать другое имя для псевдонима console.

Aliasing

/* 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');
}

Firefox не имеет консольного объекта. Firebug добавляет один.

Простое решение - открыть firebug для разработки и удалить операторы console.log для развертывания.

Вы также можете сделать собственную функцию журнала, такую ​​как

function log (msg)
{
  if(console)
  {
    console.log(msg);
  }
}

это будет регистрироваться только если консоль существует

Я всегда делаю if (console) убедитесь, что консоль действительно существует. Если firebug не открыт, это значит, что вы действуете на нулевой объект, и поэтому он ломается.

Чтобы Firefox 3.0 не жаловался надежно, используйте следующее...

if ('console' in window) {}
Другие вопросы по тегам