2011-07-19 53 views
0

可能重複:
How to get the location (src) of a javascript file?如何獲取包含JavaScript的服務器的域名?

我將包含在第三方網站上,使用<script src="" >一個JavaScript。它將可能託管在我的幾個不同的域/主機上。我需要獲取承載腳本的服務器的域名,而不是包含腳本文件的服務器的域名。因此,如果我在ABC.COM上託管腳本文件,它將從ZYX.COM中獲取,我需要檢索ABC.COM。我可以在腳本內對域名進行硬編碼,但我寧願保留一段代碼。

有沒有辦法從JavaScript內做到這一點?

回答

1

您的最佳選擇是根據運行的主機動態生成腳本文件。如果這不是一個選項,您可以通過DOM解析並找到具有正確src屬性的腳本標記,然後解析出域名。當然,如果頁面中也包含來自不同原始域名的同名腳本,那將很困難。否則,文件無法知道它被引用的URL。

var scripts = document.getElementsByTagName('script'); 
var src, i, domain; 

for (i=0; i<scripts.length; i++) { 
    src = scripts[i].src; 

    if (src.indexOf('myFile.js') != -1) { 
     domain = src.replace(/^https?\:\/\//i, '').split('/')[0]; 
     break; 
    } 
} 
+0

如果這是一個完全限定的URL,那麼您需要domain = src.split('/')[2]而不是[0]來獲取域。見jsFiddle:http://jsfiddle.net/jfriend00/xH5jn/ – jfriend00

+0

好點。忘記了協議。 –

+0

添加正則表達式來刪除http(s)://所以它會捕獲帶有和未指定協議的案例。看起來幾乎所有的瀏覽器都指定了完整的URL,所以這可能是不必要的。 –

相關問題