2009-06-09 14 views
2

私は何とかスクリプトの場所を知ることができて、それが呼び出されたページではないかと思います。例えばページがhttp://xxx.yyy.com/a.htmで、location.hrefを書き込むと、スクリプトが存在するhttp://aaa.zzz.com/script.jsの代わりにその場所が取得されます。スクリプトの場所を取得することは可能ですか?スクリプトの場所がどこから呼び出されたのかわからない

ありがとうございます。

+0

私は決してそれをやろうとしたことは考えていません...良い質問です、なぜあなたはこれをしたいのですか? –

+0

私は、ユーザーが(サードパーティのサイトから)自分のスクリプトにすぐにリンクできるようにしようとしています。ユーザーが最終的にスクリプトをダウンロードして使用することができるため、それは別のサーバーにもあります。 –

+0

すべてのリソースがスクリプトに読み込まれていることを確認しようとしていますか?あなたは、YUIのgetユーティリティやjQueryのgetScriptのようなものをあなたのスクリプトがいつも呼び出して、物がロードされていることを確認することができます。 – ajm

答えて

1

短い答え:いいえ。

長い答え:あなたは、ページ内のすべての要素をループ、それぞれの絶対URIを計算することができ、その後、上のサーバサイドスクリプトにJSON-Pリクエストを作りますあなたが制御するサーバーは、各スクリプトをダウンロードし、それをマスターコピー—と比較しますが、スクリプトが何らかの方法で変更された場合、それは壊れてしまいます。より洗練された比較アルゴリズムでよりロバストなソリューションを実現することは可能ですが、100%の信頼性を得ることはできません(区別できない同じスクリプトを2つコピーすることがあるため)。

0

スクリプトタグ自体をつかんで、src属性を解析することができます。

var scripts = document.getElementsByTagName('script'); 
for(var i = 0; i < scripts.length; i++){ 
    alert(scripts[i].src); 
} 
+0

真実ですが、コードがどのスクリプトに含まれているかをどのように知っていますか?私はすべてのページに複数のスクリプトを持っています(最近、私はそれらをバンドルしました...)、あなたはJavaScriptがどのファイルに定義されているかを知ることができません。 –

+0

ええ、私は同じ結論に達しました。スニペットをつかんで、コードレポと照らし合わせるというDavidの考えは、あなたのベストショットになるでしょう。 – ajm

1

私はこれとまったく同じことを今やっていましたが、私にとってはうまく機能しているやや異なる解決策を思いつきました。あなたは、そのスクリプトが参照されているページを所有していますか?そうであれば、そのスクリプト要素にidを付けることができます。次に、javascriptファイルで、その要素を取得し、ドメインの "src"属性を解析できます。

関連する問題