2013-07-17 68 views
0

我正在編寫一個假設可跨域使用的腳本。我試圖從另一個域包括一個腳本,然後讓該腳本包括來自同一域中的其他scrips當腳本來自另一個域名時獲取Javascript域名

例:域名1 - www.mydomain.com

<html> 
    <head> 
     <script type="text/javascript" src="http://www.example.com/app.js"></script> 
    </head> 
</html> 

示例應用JS

var imported = document.createElement('script'); 
imported.src = window.location.host + 'config.js'; 
document.head.appendChild(imported); 

var imported = document.createElement('script'); 
imported.src = window.location.host + 'stuff.js'; 
document.head.appendChild(imported); 

問題是window.location.host給出了腳本已下載到的域:www.mydomain.com。我想要腳本當前駐留的域,在這個例子中是www.example.com?

可以這樣做?並且請不要JQuery。

+0

'window'指劇本目前在頁面上你必須讓服務器動態打印主機的URL的JavaScript文件中,併爲它服務。這種方式 – Ian

+0

基本上,你需要尋找頁面中的src字符串並解析實際的域。也許這可以幫助你? - > http://stackoverflow.com/questions/6146632/get-domain-of-javascript-file – GNi33

+0

[動態加載時獲取當前正在執行的js文件的url]的可能重複(http://stackoverflow.com/questions/2277978/get-the-url-of-currently-executed-js-file-when-dynamic-loaded) – Bergi

回答

-1

通過再次閱讀您的問題,我只想問一句:

你爲什麼不這樣做比較於JS,說:

imported.src = 'config.js'; 

將導入假設是一哥的config.js的app.js

關於評論我道歉的錯誤沒有理解這個問題。

+0

沒有Jquery,onl javascript –

+1

這與實際問題沒有真正關聯 – GNi33

0

這裏是新的瀏覽器的替代方法,與DOM的加法注入腳本,有時不是在的getElementsByTagName(「腳本」)收集的最後一個腳本作品甚至:

(function(){ // script filename setter, leaves window.__filename set with active script URL. 
if(self.attachEvent){ 
function fn(e,u){self.__filename=u;} 
attachEvent("onerror",fn); 
setTimeout(function(){detachEvent("onerror", fn)},20); 
eval("gehjkrgh3489c()"); 
}else{ 
Object.defineProperty(window, "__filename", { configurable: true, get:function __filename(){ 
    try{document.s0m3741ng()}catch(y){ 
    return "http://" + 
    String(y.fileName || y.file || y.stack || y + '') 
    .split(/:\d+:\d+/)[0].split("http://")[1]; 
    } 
}})//end __filename 
}//end if old IE? 
}()); 

更新:更多全面支持補充說: 測試了IE9(S + q),IE9爲IE8(S + q),FF,章

我不知道不同的方式,除了手動嗅探腳本標籤.SRCs匹配一個硬編碼的字符串,厭惡。

快速演示:http://danml.com/pub/getfilenamedemo2.html 鏈接的腳本:http://danml.com/js/filename2.js

+0

這是一個好主意,但doesn似乎沒有任何工作。我只是嘗試在舊的IE瀏覽器(甚至是IE 9) - 'fileName','file'和'stack'沒有定義(就像你警告過的,IE 9除外)。我在Chrome(和IE 10)中試過它,只定義了'stack',但URL的檢索不起作用。在Firefox中,所有3個都已定義,但檢索不起作用。我想知道如果我做錯了什麼... – Ian

+0

@ian:你是從外部腳本調用它嗎? – dandavis

+0

是的,它在'test.js'文件中。我想知道是否重要,外部文件是在同一個項目/域 – Ian