わりと確立した方法がなくていままでモヤモヤしてたんだけど、良さそうな方法を見つけたので備忘。
StackOverflowの回答そのままなんですけどねw
var current = (function() {
if (document.currentScript) {
return document.currentScript.src;
} else {
var scripts = document.getElementsByTagName('script'),
script = scripts[scripts.length-1];
if (script.src) {
return script.src;
}
}
})();
JavaScriptファイルは順番に読み込まれるので、「直近」を取得すれば自分自身の<script>
タグが取れるという。
ぜんぜん思いつかなかった。
ちなみに以下のように複数の<script>
タグがあっても動いた。
HTMLの例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test!</title>
<script>var hoge = 'this is test';</script>
</head>
<body>
<!--
いろんなコンテンツ
-->
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
↓こういったスクリプトファイル内で、自身のファイルパスを取りたい時につかう
<script src="kono_path_wo_toritai.js"></script>
<script type="text/javascript">
// Disqusとか・・・
var disqus_shortname = 'namae_desu';
(function () {...
</script>
<script>
// Google Analyticsとか・・・
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']...
</script>
</body>
</html>
StackOverflowの回答にあるコードそのままだと、
if (script.getAttribute.length !== undefined)
の部分が(なぜ必要か)よくわからなくて、IE8では動かなかった。
ので、単純に
if (script.src)
としておいた。