Pokud se vám občas hodí mít debugovací kód přímo v JS, který vyvíjíte, možná vám přijde k užitku debugovací funkce, jejíž výstup si můžete snadno upravit dle své libosti.

Občas by se hodilo v první fázi krokovat (tedy využít, že alert() funguje jako breakpoint), poté by stačilo logovat do konzole. A nakonec jen vypnout debugování, ale debugovací kód tam ponechat.

Někomu by se mohlo hodit třeba logovat do pomocné textarey apod.

Na ukázku naživo se můžete podívat na http://jsfiddle.net/sXBkw/

/* du - debug utils */
var du = {
    /* setup */
     debug : true,
     outputType:  "console",
    /* wrapper function */
     echo : function(str, output) {
        outputType =  (typeof output == 'undefined') ? this.outputType : output;
        if(this.debug) {
            this[outputType](str);
        }
     },
    /* custom output methods */
     alert : function(str) {
         alert(str);
     },
     console : function(str) {
        if (window.console && window.console.firebug) {
            console.log(str);
        }
     }
}

/* Usage example */

du.echo("Log this to defautt output"); // default output used
du.echo("Log this message to 'alert' output", "alert");

Funkci echo(), která je náhradou alertu jsem si zapouzdřil do objektu du (můžete si samozřejmě pojmenovat podle svého, tak aby vám nekolidovalo s jinými globálními proměnnými).

  • Nastavením debug (true|false) zapnu/vypnu alertováni/logování.
  • Nastavením outputType vyberu jednu z „echo” funkcí (v příkladu jsou dvě: „alert”, „console”, ale můžete si přidat klidně svojí - třeba pro logování do textarey nebo s dumpem objektů apod. - viz odkazy níže).

Pozn.:Bez podmínky window.console && window.console.firebug bude volání console.log() (které má smysl jen ve Firefoxu s Firebugem) v IE6 zobrazovat chybu.

Mě osobně přijde vložení debugovacích volání přímo do kódu užitečné zvláště v případech, kdy předpokládáte, že se na jeho vývoji časem bude podílet více lidí (resp. bude ho rozvíjet někdo jiný než původní autor) - v takovém případě usnadní „nováčkovi“ pochopení kódu a jeho další rozvoj (mohou sloužit trochu jako test a samodokumentace).

Předem díky za vaše ohlasy... zda vám to přijde k něčemu nebo to děláte jinak.;-)

Související