Debugujete JS pomocí alert() a console.log() ?
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í
- Function to dump JS object to nicely formatted string http://jsfiddle.net/Reyzn/1/
- jQuery logging http://snipplr.com/view/6906/jquery-firebug-log/ (jQuery logging with jQuerify example http://jsfiddle.net/VMXHP/)
- JavaScript Debug: A simple wrapper for console.log
- console.js
Článek vložen 26. května 2010 a označen štítky webdev. Komentáře můžete sledovat také přes RSS 2.0 kanál..