Почему 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) {}