mardi 5 janvier 2010

Lister les fonctions de jQuery

Voici un petit bout de code que j'ai écrit ce matin pour inspecter les fonctions internes de jQuery. La raison d'être de ce script était bien simple : un brin de paresse dû au retour des vacances du temps des fêtes.

En fait, je voulais enrichir jQuery d'une nouvelle fonctionnalité et comme le nom que je m'apprêtais à utiliser aurait pu potentiellement faire parti du noyau, je voulais m'assurer qu'il n'était pas utilisé.

J'aurais pu consulter la documentation et passer les fonctions une à une mais il était plus simple de le faire avec un script. Pour obtenir la liste de toutes les fonctions internes de jQuery 1.3.2 :
$j(document).ready(listFunctions);

function listFunctions(){
jQuery.fn.each(
function(i){
console.log(i);
}
);
}
Ou pour faciliter la consultation, en créant une liste triée par ordre alphabétique :
var aList = Array();

$j(document).ready(listFunctions);

function listFunctions(){
jQuery.fn.each(
function(i){
aList.push(i);
}
);

console.log(aList.sort());
}
La dernière ligne imprimera le tableau trié dans Firebug :

["_load", "_toggle", "add", "addClass", "after", "ajaxComplete", "ajaxError", "ajaxSend", "ajaxStart", "ajaxStop", "ajaxSuccess", "andSelf", "animate", "append", "appendTo", "attr", "before", "bind", "blur", "change", "children", "click", "clone", "closest", "contents", "css", "data", "dblclick", "dequeue", "die", "domManip", "each", "empty", "end", "eq", "error", "extend", "fadeIn", "fadeOut", "fadeTo", "filter", "find", "focus", "get", "hasClass", "height", "hide", "hover", "html", "index", "init", "innerHeight", "innerWidth", "insertAfter", "insertBefore", "is", "jquery", "keydown", "keypress", "keyup", "live", "load", "map", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "next", "nextAll", "not", "offset", "offsetParent", "one", "outerHeight", "outerWidth", "parent", "parents", "position", "prepend", "prependTo", "prev", "prevAll", "push", "pushStack", "queue", "ready", "remove", "removeAttr", "removeClass", "removeData", "replaceAll", "replaceWith", "resize", "scroll", "scrollLeft", "scrollTop", "select", "selector", "serialize", "serializeArray", "setArray", "show", "siblings", "size", "slice", "slideDown", "slideToggle", "slideUp", "sort", "splice", "stop", "submit", "text", "toggle", "toggleClass", "trigger", "triggerHandler", "unbind", "unload", "val", "width", "wrap", "wrapAll", "wrapInner"].

Finalement, pourquoi est-ce qu'on n'utiliserait pas une variante du script pour faire de l'introspection sur d'autres plugins jQuery ?

Aucun commentaire:

Publier un commentaire