Firebug, безусловно, прекрасный инструмент для отладки javascript; Я использую console.log() широко.
Я хотел знать, могу ли я оставить код, специфичный для Firebug, на производстве. Какая лучшая практика? Комментирует код отладки?
Firebug, безусловно, прекрасный инструмент для отладки javascript; Я использую console.log() широко.
Я хотел знать, могу ли я оставить код, специфичный для Firebug, на производстве. Какая лучшая практика? Комментирует код отладки?
Если вы оставите вызовы console.log() в своем производственном коде, пользователи, посещающие сайт с помощью Internet Explorer, будут иметь ошибки JavaScript. Если у этих людей есть дополнительные инструменты отладки, они будут видеть неприятные диалоговые окна или всплывающие окна.
Быстрый поиск показал эту тему, обсуждая методы, чтобы определить, существует ли консоль Firebug: http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html
был укушен этим раньше. В идеале все операторы console.log необходимо удалить перед производством, но это подвержено ошибкам, и разработчики неизменно забывают или тестируют только в FF + Firebug.
Возможное решение - создать фиктивный объект консоли, если он еще не определен.
if( typeof window.console == 'undefined'){
window.console = {
log:function(){}
};
}
Одно предостережение: в Safari 10.4 было так, что любой вызов console.log вызовет исключение безопасности, поскольку объект консоли является зарезервированным объектом, используемым в виджетах панели управления Mac OS. Не уверен, что это так, проверит сегодня вечером.
Лично я недавно модифицировал свой компрессор, чтобы вырезать консольные ссылки pre-compress. Несколько минут, добавив регулярное выражение, экономит всю жизнь.
Просто подумал, что добавлю хороший совет для любой отладки js.... используйте ключевое слово "отладчик", а его как точку останова в коде, firebug обнаруживает его, и MSIE (если у вас есть визуальная студия) обнаруживает его и, как я говорю, это точка останова.
Немногие люди, похоже, знают об этом, но я нашел его невостребованным... также, если на машине, на которой запущен код, нет отладчика, ничего не происходит, и код проходит нормально. Хотя я бы не посоветовал оставить их там.
У меня было много головной боли, вызванной этим.
Я использую console.log() много, и до недавнего времени обнаружил, что это приведет к сбою всего JS-кода в версиях FF, не используя firebug.
Обычно я запускаю поиски, прежде чем переходить в эфир, и комментируя это.
D
Некоторые компрессоры вычеркнут любую строку с префиксом;;; (который является юридической последовательностью, состоящей из трех пустых операторов.) Таким образом, вы строго не ограничены ссылками на консоль (т.е. вы можете выполнить некоторые вычисления, а затем console.log() результат в конце, а компрессор может выньте все из них.) Я использую JavaScript:: Minifier для этого.
Я использую это в OOP Javascript, создавая свою собственную оболочку для журнала, которая проверяет, что firebug существует:
myclass.prototype.log = function()
{
if( typeof window.console != 'undefined' )
{
console.log.apply( null, arguments );
}
}
Просто позвоните:
this.log( arg1, arg2, ...)
Напоминаем, что IE Dev Tool не поддерживает apply() на console.log.
Вызов console.log.apply() вызовет исключение в IE8, когда инструмент dev активен.
Вы можете попробовать Отладка JavaScript, это простая оболочка для console.log http://benalman.com/projects/javascript-debug-console-log/