Я написал класс, чтобы найти путь к скриптам, который работает с отложенной загрузкой и асинхронными тегами скриптов.
У меня были некоторые файлы шаблонов, относящиеся к моим сценариям, поэтому вместо их жесткого кодирования я создал класс для автоматического создания путей. Полный исходный код находится здесь, на github.
Некоторое время назад я использовал arguments.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('.');
};
}