備忘録。

汎用的なJavaScriptライブラリを書いていると呼び出し元の HTMLファイルのパスに依存しないJavaScriptファイルのパスが 欲しくなる事がある。 (リソースとか依存JS/CSSとか)

通常の方法は無さげなのだがなんとかならないかと思って 調べてみたらこんなのが出て来た。

  • 参考1:http://littlebravehero.blog13.fc2.com/blog-entry-242.html

実行時点で document ツリーの最後に有る script タグが実行中の JS だろって事らしい。
スゲー乱暴な気がするがとりあえず試してみる。

function absPath(path) { if (!(path.match(/^\//) || path.match(/^https?:/i))) { var scripts = document.getElementsByTagName("script"); path = (scripts[scripts.length-1].src).replace(/[^\/]*$/,path); } return path; } alert(absPath("resource.path"));

ちゃんと http://localhost/js/resource.path が返って来ました。
ブラウザ依存な気がしたのでググたら既に調べた人がいて大体OKらしいです。

  • 参考2:http://d.hatena.ne.jp/Climber/20070711/1184115807

つー訳でこれは「有り」って事にしたいと思います。