如何从.js脚本中获取我的.js脚本的主机名或地址?

时间:2011-09-28 13:42:40

标签: javascript src hostname

我有一个网站,可以从任意数量的不同服务器下载相同的脚本:

<script type="text/javascript" src="http://server1.example.com/hello.js"></script>
<script type="text/javascript" src="http://server2.example.com/hello.js"></script>
<script type="text/javascript" src="http://server3.example.com/hello.js"></script>
<script type="text/javascript" src="http://server4.example.com/hello.js"></script>

每个脚本都有一个本地范围的变量,该变量必须是从中下载脚本的服务器的主机名:所以当我从server1.example.com下载该脚本时,该变量的值必须为server1.example.com

完全没有服务器端编程可以完成吗? (可以发送AJAX请求,但解决方案不能包含任何服务器端代码)

请注意我正在寻找托管脚本的主机,而不是当前浏览器页面的主机;这意味着我不是在寻找window.location

2 个答案:

答案 0 :(得分:1)

我认为以下代码可以提供帮助:

var scripts = document.getElementsByTagName('script');
for(var a = 0; a < scripts.length; a++){
    if(scripts[a].src.indexOf('<<<--###-->>>') > 0 ) 
        var ThisScriptPath = scripts[a].src.substr( 0, scripts[a].src.lastIndexOf('/'));
}

您需要将&lt;&lt;&lt; - ### - &gt;&gt;&gt;&gt; 替换为您的脚本名称,并且您将路径存储在 ThisScriptPath (记得使用最后的斜杠)

提示:在投入生产之前使用警报检查结果

答案 1 :(得分:-2)

您可以使用正则表达式从window.location.host中提取域名的第一部分。

您可以使用它来提取第一部分

var host = window.location.host;
host = host.match(/^[\d\w]+/);