fév 5 2010

Traces en javascript

Une mini-fonction en javascript qui permet facilement de faire des traces …

function TRACE(t) {
	//return false;  // trigger pour avoir des traces ou non

	try {
		var node = document.getElementById('TRACES');
		var hr = document.createElement('hr');
		node.appendChild(document.createTextNode(t));
		node.appendChild(hr);
	} catch (e) {
		try {
			console.log(t);
		} catch (e) {
			alert(t);
		}
	}
}

exemple:

var patate = 'allo';
TRACE(patate);

jan 28 2010

Conflits de noms en javascript 2

Voici une alternative à l’Object, les fonctions anonymes.

La fonction anonyme permet de déclarer n’importe quoi et rien ne sera global sauf ce qu’on choisi, en plus de permettre de racourcir certain noms de variable.

// déclaration de la fonction anonyme
(function(w, l, j, undefined) {

	// w, l, j, undefined
	// sont les paramètres passés à la fonction anonyme (on passe ce qu'on veut)

	// cette fonction reste active qu'à l'intérieur de la fonction anonyme
	function fonction_privee(p1) {
		return p1+' yeah';
	}

	// ces variables restent actives qu'à l'intérieur de la fonction anonyme
	var privee  = 'bonjour';
	var privee2 = fonction_privee('hell');
	var domaine = l.host;                      // équivalent de window.location.host
	var id      = j('body').attr('id');        // utilisation de jQuery

	// publier globalement certains morceaux
	w.domaineg  = domaine;
	w.idbody    = id;
	w.ajoutYeah = fonction_privee;

	// à l'intérieur de la fonction anonyme tout est accessible
	alert( fonction_privee('oh') );     // 'oh yeah'
	alert( privee );                    // 'bonjour'
	alert( privee2 );                   // 'hell yeah'
	alert( domaine );                   // 'jblandry.info'
	alert( id );                        // 'blog'

	alert( domaineg );                  // 'jblandry.info'
	alert( idbody );                    // 'blog'
	alert( ajoutYeah('hell') );         // 'hell yeah'

})(window, window.location, jQuery);

// en dehors de la fonction anonyme seulement ce qui a été publié est accessible
alert( fonction_privee('oh') );     // undefined
alert( privee );                    // undefined
alert( privee2 );                   // undefined
alert( domaine );                   // undefined
alert( id );                        // undefined

alert( domaineg );                  // 'jblandry.info'
alert( idbody );                    // 'blog'
alert( ajoutYeah('oh') );           // 'oh yeah'

Enjoy


jan 15 2010

Conflits de noms en javascript

Bon je suis tanné de voir des variables traîner avec des noms ‘commun’ dans des modules javascript. Voici un truc très simple pour éviter les conflits: les namespaces via Object.

var ToutSeul = new Object();

ToutSeul.ma_var = 'enfin la paix';

ToutSeul.show = function(p1) {
   alert(ToutSeul.ma_var + ' - ' + p1);
};

ToutSeul.show('je suis tout seul');

Enjoy