2008-12-30 69 views
2

當嵌入一個腳本來回調原始源,但js駐留在不同的域中時,是否有任何推薦的解決方案。有時候,其他客戶會處於不同的域,我不能依靠獲取文檔或窗口位置。獲取javascript src的位置/主機名

目前,我一直在使用這個,但不太滿意這個解決方案。

var host = window.location.hostname; 
if(host.indexOf('.devols.') > -1){ 
    return (('https:' == document.location.protocol) ? 'https://' : 'http://') + host; // return dev or localhost 
} else if(host.indexOf('.qaols.') > -1){ 
    return 'qa environment';   
} else { 
    return 'prod environment'; 
} 

更新:

到目前爲止,我一直是這樣玩弄:在頁面加載代碼週期直通腳本標籤陣列,並確定位置,以便在打完

var scriptLocation = ''; 
var SCRIPT_NAME = 'example.js'; 
var scripts = document.getElementsByTagName('script'); 
for(var i=0;i<scripts.length;i++){ 
    var src = scripts[i].getAttribute('src'); 
    if(src){ 
    var index = src.lastIndexOf(SCRIPT_NAME); 
    if((index > -1) && (index + SCRIPT_NAME.length == src.length)) { 
     scriptLocation=src.slice(0, src.indexOf('/my_script_location/')); 
     break; 
    } 
    } 
} 
return scriptLocation; 

api可以進行回調,而無需找出網址等。

回答

1

你最好從服務器傳遞這些信息並將其填充到JavaScript變量中w當該頁面送達時。

0

如果您在請求JS時指定了回調URL,那麼該怎麼辦?因此,在你的腳本標籤做這樣的事情:

<script type="text/javascript" src="http://foo/bar.js?caller=http://blah"></script> 
+0

原因是因爲js文件的行爲像一個小部件,需要回調它的原始源。 – ishortman 2008-12-30 20:41:45

0

什麼你所描述違反same origin policy,所以我不認爲它可以單獨使用的JavaScript來實現。