Dans n'importe quel langage de programmation, je peux tracer n'importe quelle fonction et savoir quelle fonction est appelée par d'autres. Mais à JavaScript, je ne sais pas comment, puisque le code n'est pas écrit par moi strong> et Firebug ne donne pas cette fonctionnalité - autant que je sache. P>
Je veux afficher les noms de fonction de chaque fonction appelée lorsque vous cliquez sur l'élément XYZ et les afficher dans l'ordre. P>
6 Réponses :
DYNATACE AJAX a certaines des fonctionnalités comme ça. Pas exactement ce que vous recherchez, mais vous donne les événements et les fonctions liés sur un élément et aide votre dépannage. Avait un téléchargement gratuit, vérifiez-le. P>
Vous pouvez voir la trace de la pile d'une erreur avec la pile Autres navigateurs ont des moyens différentes d'imprimer la trace de la pile, mais cela devrait vous obtenir ce dont vous avez besoin pour Firefox. P > J'espère que cela aide. p> p> pile () code> Appel de fonction (sur Firefox). Créer une fonction simple pour imprimer une trace de pile pourrait ressembler à ceci:
Cela devrait être au moins sur Firefox 3.6.6
trouvé ceci: function printStackTrace() {
var callstack = [];
var isCallstackPopulated = false;
try {
i.dont.exist+=0; //doesn't exist- that's the point
} catch(e) {
if (e.stack) { //Firefox
var lines = e.stack.split('\n');
for (var i=0, len=lines.length; i<len; i++) {
if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
callstack.push(lines[i]);
}
}
//Remove call to printStackTrace()
callstack.shift();
isCallstackPopulated = true;
}
else if (window.opera && e.message) { //Opera
var lines = e.message.split('\n');
for (var i=0, len=lines.length; i<len; i++) {
if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
var entry = lines[i];
//Append next line also since it has the file info
if (lines[i+1]) {
entry += " at " + lines[i+1];
i++;
}
callstack.push(entry);
}
}
//Remove call to printStackTrace()
callstack.shift();
isCallstackPopulated = true;
}
}
if (!isCallstackPopulated) { //IE and Safari
var currentFunction = arguments.callee.caller;
while (currentFunction) {
var fn = currentFunction.toString();
var fname = fn.substring(fn.indexOf("function") + 8, fn.indexOf('')) || 'anonymous';
callstack.push(fname);
currentFunction = currentFunction.caller;
}
}
output(callstack);
}
function output(arr) {
// Output however you want
alert(arr.join('\n\n'));
}
Il convient de noter qu'ils ont un site github maintenant, github.com/eriwen/javascript-stacttactrace
Si vous souhaitez simplement déboguer votre code, votre meilleure option consiste à obtenir un plug-in de débogueur pour votre navigateur. Le plug-in Firebug fournit des traces de pile. ( voir ici ) p>
Si vous souhaitez le faire à partir de votre code, il n'y a pas de fonctionnalité de langue standard de JavaScript qui vous permet de le faire. Différents navigateurs mai em> implémentent des extensions non standard, mais vous ne devriez pas compter sur eux. P>
comme "Casablanca" mentionne ... Veuillez noter du site de la JS-Stack-Trace susmentionnée (
http://www.eriwen.com/javascript/js-stact-trace/ a>) que dans Firefox et Chrome: P>
Evident Facile Way: Firebug, Chrome Dev Outils, Dragonfly, etc. Strong> P>
Vous pouvez facilement obtenir une trace de pile à tout moment en appelant
console.trace () dans votre javascript ou dans la console Firebug. P>
blockQuote>
car il semble que vous souhaitiez inspecter la pile et prendre des pièces des informations (les noms de fonction), on dirait que vous avez besoin p>
qui a été construit exactement à cette fin. p>