sdConsole is a Javascript class used to present logging, warning, error, and debug messages to the user. These messages will be shown:

  • in the firebug console if the firebug extension is installed,
  • in a console text area on the current webpage if an HTML element with the id "sdConsoleId" is defined,
  • in the browser status bar (needs to be enabled in Firefox preferences),
  • in the browser title bar (see comments in source),
  • or in pop-up alerts (see comments in source).
  • Debug messages with a debugLevel <= SD.DEBUG_LEVEL will be shown.
  • See this page for an example of sdConsole.

The sdConsole command syntax is as follows:

Command Syntax:

SD.console.log(string message);

SD.console.warn(string message);

SD.console.error(string message);

SD.console.debug(string message, integer debugLevel);

 

And the sdConsole Javascript source is:

/*!
 * ====================================================================
 * $Id: SDConsole.js 229 2010-11-06 16:22:52Z dgd $
 * Copyright © 2009 - 2010 David DeGroote, Symmetric Designs. All rights reserved.
 */
/*jslint undef:false, white:false, plusplus:false, onevar:false, bitwise:false */

// Create our global namespace if it's not already defined
if (typeof SD === "undefined")
	{
	SD = {};
	}
else if (typeof SD !== "object")
	{
	throw new Error("SD exists and is not an object!");
	}

////////////////////////////////////////////
// Default debug level
SD.DEBUG_LEVEL = 1;

// Default notification method for errors:
//SD.NOTIFY_METHOD = 'alert';	// Can get anoying if there are a lot of messages.
//SD.NOTIFY_METHOD = 'title';	// Multiple messages get overwritten.
SD.NOTIFY_METHOD = 'status';	// Need to enable in Firefox
				// (preferences / Content / Advanced Javascript / Change status bar text).
				// (Multiple messages get overwritten.)

SD.console = {};

SD.console.log = function(msg)
	{
	// Modified from: http://alvinabad.wordpress.com/2009/03/06/firebug-console-object-cannot-be-overridden/
	if (typeof(console) !== 'undefined')
		{
		if (typeof(console.log) === 'function')
			{
			console.log(msg);
			}
		}

	var sdConsoleElement = document.getElementById('sdConsoleId');
	if (sdConsoleElement !== null)
		{
		sdConsoleElement.innerHTML += "<br/>" + msg;
		return true;
		}
	return false;
	};

SD.console.debug = function(msg, debugLevel)
	{
	if (debugLevel > SD.DEBUG_LEVEL)
		{
		return false;
		}

	return SD.console.log("Debug:"+msg);
	};

SD.console.warn = function(msg)
	{
	if (typeof(console) !== 'undefined')
		{
		if (typeof(console.warn) === 'function')
			{
			console.warn(msg);
			}
		}

	return SD.console.log("Warn:"+msg);
	};

SD.console.error = function(msg)
	{
	if (typeof(console) !== 'undefined')
		{
		if (typeof(console.error) === 'function')
			{
			console.error(msg);
			}
		}

	if (SD.console.log("Error *** :"+msg))
		{
		return true;
		}

	// Notify the user
	switch (SD.NOTIFY_METHOD)
		{
		case 'alert':  alert("Error:"+msg);  break;
		case 'title':  document.title = msg; break;
		case 'status': window.status = msg;  break;
		}

	return true;
	};
////////////////////////////////////////////