Это даст трассировку стека (в виде массива строк) для современных Chrome, Firefox, Opera и IE10 +
function getStackTrace () {
var stack;
try {
throw new Error('');
}
catch (error) {
stack = error.stack || '';
}
stack = stack.split('\n').map(function (line) { return line.trim(); });
return stack.splice(stack[0] == 'Error' ? 2 : 1);
}
Использование:
console.log(getStackTrace().join('\n'));
Исключает из стека своисобственный вызов, а также заголовок «Ошибка», который используется в Chrome и Firefox (но не в IE).
В старых браузерах не должно произойти сбой, а просто должен быть возвращен пустой массив.Если вам нужно более универсальное решение, посмотрите stacktrace.js .Его список поддерживаемых браузеров действительно впечатляет, но, на мой взгляд, он очень большой для той небольшой задачи, для которой он предназначен: 37 Кбайт минимизированного текста, включая все зависимости.