如何获取包含JavaScript的服务器的域名?

如何获取包含JavaScript的服务器的域名?,javascript,Javascript,可能重复: 我有一个JavaScript,它将使用包含在第三方网站上。它可能会托管在我的几个不同的域/主机上。我需要获取承载脚本的服务器的域名,而不是包含脚本文件的服务器的域名。因此,如果我将脚本文件托管在ABC.COM上,并从ZYX.COM中包含它,我需要检索ABC.COM。我可以在脚本中硬编码域名,但我宁愿保留代码的单一版本 有没有办法从JavaScript中执行此操作?您最好的选择是根据脚本文件运行的主机动态生成脚本文件。如果这不是一个选项,您可以通过DOM进行解析,找到具有正确src属

可能重复:

我有一个JavaScript,它将使用
包含在第三方网站上。它可能会托管在我的几个不同的域/主机上。我需要获取承载脚本的服务器的域名,而不是包含脚本文件的服务器的域名。因此,如果我将脚本文件托管在ABC.COM上,并从ZYX.COM中包含它,我需要检索ABC.COM。我可以在脚本中硬编码域名,但我宁愿保留代码的单一版本


有没有办法从JavaScript中执行此操作?

您最好的选择是根据脚本文件运行的主机动态生成脚本文件。如果这不是一个选项,您可以通过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;
    }
}
var scripts=document.getElementsByTagName('script');
var src,i,域;

对于(i=0;ii)如果这是一个完全限定的URL,那么您需要domain=src.split(“/”)[2]而不是[0]来获取域。请参阅jsFiddle:Good point。忘记了协议。添加了regex以删除http://因此它将捕获有指定协议和无指定协议的情况。似乎几乎所有浏览器都指定了完整的URL,因此这可能是不必要的。谢谢Ben,我真的希望JS中已经内置了一个快速命令,但这会起到作用:)