배경
동료가 브라우저에 동적으로 삽입된 JavaScript 파일에서 현재 파일 이름을 가져오는 방법에 대해 질문했습니다.
파일 이름을 출력하는 서버 외에 스크립트에서 파일 이름을 얻는 방법은 다음 세 가지뿐입니다.
솔루션 A
공통 솔루션은 페이지에 정적 스크립트 태그를 도입하거나 단일 동적 로드에만 사용할 수 있습니다.
var scripts = document.getElementsByTagName('script ');
var filename = scripts[scripts.length -1].src;
여러 스크립트 태그의 동적 삽입:
loadScript('b.js?param=1')
loadScript('a.js? param=2')
loadScript('b.js?param=3')
loadScript('a.js?param=4')
/* 출력
a.js >>> http://localhost:800/io/a.js?param=4
a.js >>> http://localhost:800/io/a.js?param =4
b.js >>> http://localhost:800/io/a.js?param=4
b.js >>> /io/a.js?param=4
*/
솔루션 B
비정상적인 유형, FireFox에서만 작동함:
try {
throw new Error()
}
catch(Exception) {
console.log (Exception.fileName);
}
솔루션 C
내 솔루션, 작업 소스 코드:
requireScript('a.js?' Date.now(),function(text,src) {
console.log('text :',text);
globalEval('(function() { nvar __filename = "' src '";n' text 'n;})();'); 🎜>})
브라우저 출력: