Я написав клас, щоб знайти шлях до скриптів, який працює із затримкою завантаження та тегами асинхронних скриптів.
У мене було кілька файлів шаблонів, які були відносно моїх сценаріїв, тому замість жорсткого їх кодування я створив клас для автоматичного створення шляхів. Повне джерело знаходиться тут на github.
Деякий час тому мені довелося використовувати аргументи.callee, щоб спробувати зробити щось подібне, але нещодавно я прочитав у MDN, що це не дозволено в суворому режимі .
function ScriptPath() {
var scriptPath = '';
try {
throw new Error();
}
catch(e) {
var stackLines = e.stack.split('\n');
var callerIndex = 0;
for(var i in stackLines){
if(!stackLines[i].match(/http[s]?:\/\//)) continue;
callerIndex = Number(i) + 2;
break;
}
pathParts = stackLines[callerIndex].match(/((http[s]?:\/\/.+\/)([^\/]+\.js)):/);
}
this.fullPath = function() {
return pathParts[1];
};
this.path = function() {
return pathParts[2];
};
this.file = function() {
return pathParts[3];
};
this.fileNoExt = function() {
var parts = this.file().split('.');
parts.length = parts.length != 1 ? parts.length - 1 : 1;
return parts.join('.');
};
}