[Javascript] 外部スクリプトから呼び出されているjavascriptファイルのパスを取得する関数
どこかで似たようなエントリーを見かけたけど見つからないので自作してみた。問題が多く実用的じゃないので注意
IE7,Firefox2,Safari2,Opera9.20で確認して動いてたので実用で使っても大丈夫。
HTMLリード中にjavascriptが解釈されることを想定して
下記のコードをscriptタグで指定して開く
var getScriptPath = function(){ var f=function(e){ var name=e.tagName; if(!!name && name.toUpperCase()=='SCRIPT') return e; var c=e.lastChild; return (!!c)?f(c):null; }; var es=f(document); if(!es) return window.location; return es.getAttribute('src') || window.location; }; alert(getScriptPath());
<html> <head> <script type="text/javascript" src="lib/js/getscriptpath.js"></script> </head> <body> </body> </html>
実行するとアラートで「lib/js/getscriptpath.js」と表示されます。
前提
- ブラウザのHTMLパーサがSAXっぽく要素(タグ)を解釈してDOMツリーを構築している
- スクリプトが読み込まれ次第実行。