背景
同僚が質問しました。ブラウザに動的に挿入される JavaScript ファイルの現在のファイル名を取得する方法は?
スクリプト内でファイル名を取得する方法は、サーバーが出力する以外に次の 3 つしかありません。
ソリューション A
共通のソリューションは、ページ上の静的スクリプト タグの導入または単一の動的ロードにのみ使用できます。
var scripts = document.getElementsByTagName('script ');
var filename = 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 >>> =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 (例外.fileName );
}
解決策 C
私の解決策、操作ソース コード:
requireScript('a.js?' Date.now(),function(text,src) {
console.log('text :',text);
globalEval('(function() { nvar __filename = "' src '";n' text 'n;})();'); 🎜>})
ブラウザ出力: