Лучшая практика JavaScript: обработка определенного для Firebug кода

Я тоже столкнулся с этой проблемой. Эта проблема возникает только для версии зависимости ограничений ограничения . Использовать 1.1.3 версию & amp; надеюсь, что ваша проблема будет решена:

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
12
задан Dan Burzo 27 May 2009 в 12:15
поделиться

9 ответов

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

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

14
ответ дан 2 December 2019 в 03:25
поделиться

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

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

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

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

14
ответ дан 2 December 2019 в 03:25
поделиться

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

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

Я обычно запускаю находку перед запуском и комментирую ее.

D

2
ответ дан 2 December 2019 в 03:25
поделиться

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

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

3
ответ дан 2 December 2019 в 03:25
поделиться

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

8
ответ дан 2 December 2019 в 03:25
поделиться

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

2
ответ дан 2 December 2019 в 03:25
поделиться

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

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

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

this.log( arg1, arg2, ...)
1
ответ дан 2 December 2019 в 03:25
поделиться

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

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

0
ответ дан 2 December 2019 в 03:25
поделиться

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

0
ответ дан 2 December 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: