获取javascript src位置/主机名

时间:2008-12-30 20:08:44

标签: javascript

嵌入脚本时是否有任何推荐的解决方案,该脚本将对原始源进行回调,但js位于不同的域中。有时其他客户端将位于不同的域中,我不能依赖于获取文档或窗口位置。

目前,我一直在使用此功能,但对此解决方案不太满意。

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可以进行回调,而不必弄清楚URL等...

3 个答案:

答案 0 :(得分:1)

最好从服务器传递此信息,并在提供页面时将其填充到JavaScript变量中。

答案 1 :(得分:0)

如果您在申请JS时指定了回调网址,该怎么办?因此,在您的脚本标记中执行以下操作:

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

答案 2 :(得分:0)

您所描述的内容违反了same origin policy,因此我认为仅凭javascript就无法实现。