嵌入脚本时是否有任何推荐的解决方案,该脚本将对原始源进行回调,但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等...
答案 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就无法实现。