In any programming language, I can trace any function and know which function is called by other. But in Javascript , I don’t know how, since the code is not written by me and Firebug does not give this feature – as far as I know.
An example :
I want to display the function names of each function that is called when clicking on XYZ Element, and display them in order.
Advertisement
Answer
Found this: A javascript stacktrace in any browser, James says they have a github account now
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('nn')); }