mardi 5 janvier 2010
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);Ou pour faciliter la consultation, en créant une liste triée par ordre alphabétique :
function listFunctions(){
jQuery.fn.each(
function(i){
console.log(i);
}
);
}
var aList = Array();La dernière ligne imprimera le tableau trié dans Firebug :
$j(document).ready(listFunctions);
function listFunctions(){
jQuery.fn.each(
function(i){
aList.push(i);
}
);
console.log(aList.sort());
}
["_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 ?
Finalement, pourquoi est-ce qu'on n'utiliserait pas une variante du script pour faire de l'introspection sur d'autres plugins jQuery ?