2009-11-10 21 views
9

可能性の重複:
What is my script src URL?同じJSファイルでJSファイルのURLを取得するにはどうすればよいですか?

I持っている状況:ファイル

<script 
    type="text/javascript" 
    src="http://server/some.js"> 
</script> 

は私がsome.js同じファイルのフルパスを知っておく必要があり some.js 、eq。 http://server/some.js。これどうやってするの?

HTMLコードは変更できません(クライアントにはJSファイルが含まれています)。

+0

http://stackoverflow.com/questions/984510/what-is-my-script-src-url –

答えて

7

は1つの

sc = document.getElementsByTagName("script"); 

for(idx = 0; idx < sc.length; idx++) 
{ 
    s = sc.item(idx); 

    if(s.src && s.src.match(/some\.js$/)) 
    { return s.src; } 
} 
+0

+1、非常に良いアプローチ。 –

+3

トマシュ、何か不足している、あるいはどこにscを初期化していますか?また、 idx = 0 とsの前にvarキーワードを追加すると、IMO全体がきれいになります。コードの良い部分、そうでなければ。 –

+0

Tom Bartel - あなたは正しくなっていた そのtipのための – sbczk

0

ない、それはこれを試すことで、すべてのブラウザで動作を確認してください。

function getScriptFileName() { 
    return (new Error).fileName; 
} 
+1

悲しいことに、 'Error'オブジェクトは標準化されておらず、' fileName'はMozillaにのみ存在するようです。 – bobince

+0

Safariでは動作しません。 – Sutra

9

最も簡単な方法は、単に文書に追加される最後のスクリプトを探すことであることを試みます:

var scripts= document.getElementsByTagName('script'); 
var mysrc= scripts[scripts.length-1].src; 

これは、後で呼び出されるコードではなく、スクリプト本体で行う必要があります。スクリプトの開始時にそれを実行し、必要に応じて後の関数呼び出しで使用できるように変数を覚えておいてください。したがって、後でスクリプト内の新しい<script>ノードを文書に挿入するコードの影響を受けません。

+0

THAT元気です! –

+0

async属性でもこれを行いますか? – Eric

関連する問題