Tôi đã viết một lớp để tìm đường dẫn các tập lệnh hoạt động với các thẻ tập lệnh tải chậm và không đồng bộ.
Tôi đã có một số tệp mẫu liên quan đến các tập lệnh của mình, vì vậy thay vì viết mã cứng, tôi đã tạo lớp để tạo các đường dẫn tự động. Nguồn đầy đủ ở đây trên github.
Một thời gian trước, tôi đã sử dụng arg.callee để thử và làm điều gì đó tương tự nhưng gần đây tôi đã đọc trên MDN rằng nó không được phép ở chế độ nghiêm ngặt .
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('.');
};
}