Удобный дебаг с BlackBird

    imageХочу представить вам одну библиотеку для яваскрипта, под названием BlackBird. Основное ее назначение, избавить разработчика от не нужного дебага при помощи alert(), о чем собственно и говорит слоган «Скажите привет BlackBird и скажите пока alert()» ( Say hello to Blackbird and 'goodbye' to alert() ).

    Встроить в библиотеку чрезвычайно просто. Закачайте к себе на хостинг файлы библиотеки, и расположите их на хостинге.
    Потом, включите в страницу файлы blackbird.js и blackbird.css.
    После этого в коде, вместо надоевших alert() можете указывать:
    log.debug( 'this is a debug message' );
    log.info( 'this is an info message' );
    log.warn( 'this is a warning message' );
    log.error( 'this is an error message' );

    Эти сообщения буду появляться в окне (как на картинке в топике), которое по умолчанию будет расположено слева. Основные фичи:
    • Возможность фильтровать типы сообщений прямо в окне дебагера.
    • Изменение размера окна дебагера, и его размещения.
    • Hotkeys.

    Работает под:
    • Internet Explorer 6+
    • Firefox 2+
    • Safari 2+
    • Opera 9.5

    Демо и домашняя страница
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 54

      +36
      ФаерБаг наше все =)
      getfirebug.com
        +7
        Не согласен. Файербаг, несомненно, незаменимый и значительно более мощный инструмент, но работает он только в ФФ и, к сожалению, часто скрипты работающие в ФФ не работают в ИЕ. И тут на помощь приходит Блэкбёрд, который можно использовать и в ИЕ, и в Опере, и в Вебкитовских браузерах.
          +8
            +1
            А у лайт-версии ФБ есть аналог console.time(name)/console.timeEnd(name) из большого ФБ? Я не нашел. А в Блэкбёрде есть.
            0
            так на то есть getfirebug.com/lite.html
              +1
              Если правильно понимаю данная библиотека отвечает только за вывод, но не как не за отлов ошибок. Поправьте меня если ошибаюсь.
              +3
              зачем использовать FireBug если есть BlackBird?;)
                0
                В blackbird есть инспектор?
                  0
                  а вы не обратили внимание на смайлик вконце?)
              +3
              Так вроде ж есть FireBug Lite (на JS) под все браузеры
                +1
                Только под IE он жутко тормозит, если DOM-дерево солидное.
                  0
                  Под IE есть IE Developer Toolbar 1.00.2188.0
                    0
                    Есть. Пользуемся. +)
                +3
                а можно эту библиотеку использовать как лог действий пользователя)
                  0
                  Отлично, то что искал как раз
                    +1
                    надо еще добавить что вызывается окошко по F2
                    А то пришлось в код заглядывать чтобы найти как же увидеть этот лог
                      0
                      Так об этом в доке написано. Кроме того это окошко можно вызвать программно методом log.toggle().
                        0
                        в архиве только readme.txt и никаких других доков, в readme про это ни слово, только как подключить, но ни слова про то как вызвать
                      +4
                      Еще вот сразу не понравилось что он только один параметр принимает. Чтобы функции поддерживали произвольное число параметров замените соотвествующий кусок в файле blackbird.js на следующий:
                      		join:
                      			function( arg) {
                      				if(!arg) return ''; 
                      				var arr=[];
                      				for(var i=0; i < arg.length; i++)
                      					arr[i] = arg[i];
                      				return arr.join(' ');
                      			},
                      		move:
                      			function() { reposition(); },
                      		debug: 
                      			function() { addMessage( 'debug', this.join(arguments)); },
                      		warn:
                      			function() { addMessage( 'warn', this.join(arguments) ); },
                      		info:
                      			function() { addMessage( 'info', this.join(arguments) ); },
                      		error:
                      			function() { addMessage( 'error', this.join(arguments) ); },
                      
                        0
                        Что-то у Вас масло перемасленное получилось — зачем явная функция join, когда можно так:

                        debug: function () { addMessage('debug', arguments.join(' '))

                        ну и так далее…
                          0
                          ну если вы такой грамотный, то попробуйте.
                          хинт: arguments — это не Array, хоть он и поддерживает видимость массива.
                            0
                            Капец. :( Вот до чего Mootools доводит. А вообще, Object.prototype.join = function () {… }, но это, конечно же, не кошерно ;-)
                              +1
                              Зато вот так кошерно:

                              debug: function () { addMessage('debug', Array.prototype.slice.call(arguments).join(' ')) }
                                0
                                ну вот, другое дело! можем когда хотим :-)
                                поменяю у себя на такой вариант, вернее заменю контент join метода — вместо копирования в новый массив
                                0
                                Ну и на закуску:

                                alert((function () { return Array.prototype.join.call(arguments, ":") })(1,2,3));
                            +1
                            Всё равно console.log от Firebug firebug.ru/logging.html это наше всё
                              0
                              Минус ему за то что он объекты разворачивать не умеет. Надеюсь в будущем научится :)
                                +3
                                Когда быстро что-то делаешь, времени подключать и переписывать библиотеки не всегда есть, поэтому лучше alert() только alert().
                                А если дебагить по серьезному — DragonFly или FireBug.

                                Но на заметку BB взять можно :)
                                  –3
                                  Много грамматических ошибок, опечаток… Печально.
                                    +1
                                    вся проблема с этими дебажными библиотеками — они не работают там, где реально возникают проблемы :) В частности, IE5.5-
                                      +1
                                      ИЕ можно под Visual Studio отлаживать :)
                                        0
                                        Только вот не все наберуться храбрости поставить такую IDE чтоб js отлаживать
                                          +1
                                          Aptana?
                                            0
                                            не юзал, не знаю
                                              0
                                              Неплохая штука SPKET IDE. Подключается к eclipse, а значит и к аптане, зенду
                                                0
                                                прошу прощения за «некропостинг», но как Spket или Aptana помогут дебажить JS в IE5.x ?!
                                                да и вообще, дебажить JS? :")
                                        –1
                                        Закачайте к себе на хостинг файлы библиотеки, и расположите их на хостинге.
                                        Потом, включите в страницу файлы blackbird.js и blackbird.css.

                                        alert по-любому проще. и работает во всех браузерах. зачем опять изобретать велосипед?
                                          0
                                          Бывают ситуации, когда alert не катит. Например в случаях, когда необходимо, чтобы скрипт выполнялся дальше, а alert прерывает его.
                                            0
                                            Нажмите «OK» на появляющемся окошке и скрипт продолжиться.
                                              +1
                                              Это понятно, что продолжится, но что, если нужно, чтобы он работал непрерывно. Такая ситуация может быть связана с отсечками времени, т. е. пока вы прочтёте и нажмёте «ОК», пройдёт какой-то определённый промежуток времени, чего не должно быть.
                                                0
                                                Убедили. Просто с такими ситуациями не сталкивался.
                                              0
                                              в таких случаях я использую другие трюки:
                                              выводит в строку статуса, но в каких-то браузерах надо явно разрешить вывод в статус в настройках:

                                              window.status += ".bla-bla"

                                              или

                                              document.title += ".bla-bla"

                                              так как вывод бывает длинный, а важно видеть последнее, то команды чуть другие:

                                              window.status = ".bla-bla" + window.status
                                              document.title = ".bla-bla" + document.title

                                              Иногда пользуюсь обеими вместе чтобы разделить вывод из разных мест.

                                              –1
                                              Алерт проще, но и хуже намного, я б даже сказал, что алерт ето зло!

                                              Аргументы.

                                              1. Попробуйте включить алерт в вечный цыкл :-) и посмотрите что получиться… (браузер тупо зивиснет)
                                              2. Только в некоторых броузерах (Опере, и ФФ3) можно скопировать текст алерта в бувер обмена.
                                              3. Когда нужно алертнуть большой текст, то алерт оброезает фрагмент текста (переполнение буфера), или его просто нелзя проскролить вниз
                                              4. Алерт приостановливает выполнение скрипта (иногда ето нужно, но не всегда)
                                                0
                                                Писал уже выше: «Убедили. Просто с такими ситуациями не сталкивался. „
                                              –1
                                              Я не эксперт в этих приблудах, но как-то раз использовал HackerConsole от dkLab. Мне понравилось
                                                +1
                                                это php, а там js.
                                                  –1
                                                  Хотя он, конечно же, полезен для отладки серверных скриптов :)
                                                    –1
                                                    Возможно. Не пробовал. Для меня php — тёмный лес.
                                                  0
                                                  Больше подходит как мониторинг переменных, но не как отлов бажей
                                                    0
                                                    На первый взляд касно!
                                                    Чтото похожее хотел сам писать :-)… теперь не буду…

                                                      +1

                                                      Не понравились стандартные иконки. Решил засунуть из набора famfamfam silk icons.
                                                        0
                                                        У кого-то он заработал? У меня не получается его завести :(
                                                          0
                                                          в IE у него проблемы со стилями, переделал и выкосил половину нахрен.

                                                          Only users with full accounts can post comments. Log in, please.