2009-11-19 51 views
1

可以說我有一個頁面,這個代碼就可以在www.foo.com:可以從腳本中獲取從哪裏加載JavaScript庫的位置?

<script src="http://www.bar.com/script.js" /> 

我能寫代碼的script.js中,可以檢查它從bar.com服務?顯然document.location.href會給我foo.com。

謝謝!

+1

是的。看到http://stackoverflow.com/questions/984510/what-is-my-script-src-url/984656#984656 –

回答

3
var scripts = document.getElementsByTagName("script"); 

給你 頁面中的所有腳本在此之後的集合,你可以閱讀他們的SRC屬性來找到你的目標(我希望你知道劇本是怎麼稱呼)

for (var i=0, limit=scripts.lenght; i< limit; i++) { 
    if (scripts[i].src.substr(<calculate your offset>) == scriptName) { 
     // Have you found your script, extract your data 
    } 
} 
+0

這不會告訴如果script.js從www.bar.com被__served__,只是src是那個。它不考慮重定向。 –

+0

儘管如此,假設這是一個很好的起點。如果您需要調查重定向,則可以使用xhttprequest進一步挖掘。 – Eineki

+0

我想這可能是最好的答案,因爲我知道腳本名。看起來像我真正希望的那一點不適合客戶端,但這是一個很好的解決方法。 –

1

的只有找出一個非工人腳本的位置的方法是非標準error.fileName,這是隻有Firefox和Opera支持:

var loc = (new Error).fileName; 

如果腳本是一個工作線程(當然不是),那麼你可以使用location對象。

1

如果它真的很重要,你可以解決它通過定義包含在每個腳本標籤前的腳本URL字符串:

<script type="text/javascript">SCRIPT_URL = "http://www.bar.com/script.js"</script> 
<script src="http://www.bar.com/script.js" /> 

裏面的腳本文件,那麼你就可以訪問網址

alert("my URL is "+SCRIPT_URL); 

不是太優雅,但應該工作。

你也可以,如果你有一個像PHP服務器端語言,不介意發送JS文件通過翻譯,JS文件中做這樣的事情(大性能警告!):

<script type="text/javascript">var my_url = "<? echo $_SERVER["REQUEST_URI"]; ?>"</script> 

但這真的應該是最後的選擇。