Лучшая практика Javascript: обработка кода, специфичного для Firebug - PullRequest
12 голосов
/ 27 мая 2009

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

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

Ответы [ 9 ]

14 голосов
/ 27 мая 2009

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

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

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

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

14 голосов
/ 27 мая 2009

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

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

8 голосов
/ 27 мая 2009

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

3 голосов
/ 27 мая 2009

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

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

2 голосов
/ 27 мая 2009

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

2 голосов
/ 27 мая 2009

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

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

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

D

1 голос
/ 18 августа 2009

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

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

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

this.log( arg1, arg2, ...)
0 голосов
/ 23 мая 2010

Вы можете попробовать Отладка JavaScript , это простая оболочка для console.log http://benalman.com/projects/javascript-debug-console-log/

0 голосов
/ 24 декабря 2009

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

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

...