Определите, был ли Firebug console.log () вызван где-либо на странице - PullRequest
2 голосов
/ 03 ноября 2010

Я бы хотел иметь возможность программно добавить класс console в тег <body>, если Firebug console.log() был вызван где-нибудь на странице.Тогда я мог бы вывести какое-нибудь неприятное сообщение на экран, чтобы напомнить мне не развертывать код с этими утверждениями.

Очень похоже на Диагностический CSS Эрика Мейера .

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 03 ноября 2010

Hehehe.Это простая ошибка, не так ли.

  • Вариант 1: Всегда писать if(window.console) console.log(...); вместо просто console.log(..);
  • Вариант 2:

    function mydebug(thingtodebug) {
        if(window.console) console.log(thingtodebug);
    }
    

.. затем всегда используйте mydebug() вместо console.log();.Вы можете включить предложение else, которое выдает окно предупреждения, если консоль не определена.

  • Опция 3:

    if(!window.console) {
        var console={
            log : function() {alert("Don't call console.log");}
        }
    }
    

... это будет в точности соответствовать тому, что вы просите.

Беда в том, что все эти опции включают в себя добавление дополнительного кода в вашу живую систему, чтобы помочь вам избежать смущения.(и, конечно, было бы еще более неловко, если бы вы пропустили это окно с предупреждением!)

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

Надеюсь, это поможет.

1 голос
/ 03 ноября 2010

Это работает для меня (используя jQuery):

$(document).ready(function() {
  var body = $('body'),
      console = window.console;

  console.debug = function() {
    if (!body.hasClass('console')) {
      body.addClass('console');
      console.debug = oldDebug;
    }
  }

  console.debug('foo');
});

Он добавит класс только при первом вызове нашей пользовательской функции. Затем он устанавливает console.debug в исходную функцию. Это классная вещь с JavaScript, вы можете переопределить почти все:)

0 голосов
/ 03 ноября 2010

Это довольно просто. Просто переопределите объект консоли по умолчанию своим собственным:

<!DOCTYPE html>
<html>
    <head>
        <title>Console Test</title>
        <script>
            var oldConsole = (typeof window.console === "object") ? window.console : null;
            var console = {
                log: function() {
                    oldConsole.log(arguments);
                    document.body.className = "console";
                    alert('applied class');
                }
            };
        </script>
    </head>
    <body>
        <input type="button" value="click me" onclick="console.log('this is a test');">
    </body>
</html&gt

Живой пример.

...