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

Практика Javascript: обработка кода, специфичного для Firebug

Firebug, безусловно, прекрасный инструмент для отладки javascript; Я использую console.log() широко.

Я хотел знать, могу ли я оставить код, специфичный для Firebug, на производстве. Какая лучшая практика? Комментирует код отладки?

4b9b3361

Ответ 1

Если вы оставите вызовы console.log() в своем производственном коде, пользователи, посещающие сайт с помощью Internet Explorer, будут иметь ошибки JavaScript. Если у этих людей есть дополнительные инструменты отладки, они будут видеть неприятные диалоговые окна или всплывающие окна.

Быстрый поиск показал эту тему, обсуждая методы, чтобы определить, существует ли консоль Firebug: http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html

Ответ 2

был укушен этим раньше. В идеале все операторы console.log необходимо удалить перед производством, но это подвержено ошибкам, и разработчики неизменно забывают или тестируют только в FF + Firebug.

Возможное решение - создать фиктивный объект консоли, если он еще не определен.

if( typeof window.console == 'undefined'){
    window.console = {
        log:function(){}
    };
}

Одно предостережение: в Safari 10.4 было так, что любой вызов console.log вызовет исключение безопасности, поскольку объект консоли является зарезервированным объектом, используемым в виджетах панели управления Mac OS. Не уверен, что это так, проверит сегодня вечером.

Ответ 3

Лично я недавно модифицировал свой компрессор, чтобы вырезать консольные ссылки pre-compress. Несколько минут, добавив регулярное выражение, экономит всю жизнь.

Ответ 4

Просто подумал, что добавлю хороший совет для любой отладки js.... используйте ключевое слово "отладчик", а его как точку останова в коде, firebug обнаруживает его, и MSIE (если у вас есть визуальная студия) обнаруживает его и, как я говорю, это точка останова.

Немногие люди, похоже, знают об этом, но я нашел его невостребованным... также, если на машине, на которой запущен код, нет отладчика, ничего не происходит, и код проходит нормально. Хотя я бы не посоветовал оставить их там.

Ответ 5

У меня было много головной боли, вызванной этим.

Я использую console.log() много, и до недавнего времени обнаружил, что это приведет к сбою всего JS-кода в версиях FF, не используя firebug.

Обычно я запускаю поиски, прежде чем переходить в эфир, и комментируя это.

D

Ответ 6

Некоторые компрессоры вычеркнут любую строку с префиксом;;; (который является юридической последовательностью, состоящей из трех пустых операторов.) Таким образом, вы строго не ограничены ссылками на консоль (т.е. вы можете выполнить некоторые вычисления, а затем console.log() результат в конце, а компрессор может выньте все из них.) Я использую JavaScript:: Minifier для этого.

Ответ 7

Я использую это в OOP Javascript, создавая свою собственную оболочку для журнала, которая проверяет, что firebug существует:

myclass.prototype.log = function()
{ 
    if( typeof window.console != 'undefined' )
    {
        console.log.apply( null, arguments ); 
    }
}

Просто позвоните:

this.log( arg1, arg2, ...)

Ответ 8

Напоминаем, что IE Dev Tool не поддерживает apply() на console.log.

Вызов console.log.apply() вызовет исключение в IE8, когда инструмент dev активен.