如何使外部javascript文件知道自己的主机?

时间:2012-02-09 13:02:30

标签: javascript

有没有办法在外部javascript文件中,可以知道文件的主机?

例如,如果我有网站http://hostOne.com/index.php,则文件index.php的代码:

<html>
<head>
   <script type="text/javascript" src="http://hostTwo.com/script/test.js"></script>
</head>
<body>
   <div>...</div>
</body>
</html>

我需要在文件test.js中知道主机http://hostTwo.com

谢谢。

修改

或者它可以知道被称为?的标签“script”,使用此选项我可以分析标签并获取“src”属性。但我不想依赖文件test.js的名称,并分析包含该网站的所有标记script

* 基于@Armi *

代码的解决方案

HTML:

    <html>
    <head>
      <script class="jsbin"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
      <script id="idscript" type="text/javascript" src="http://hostTwo.com/script/test.js"></script>
    </head>
    <body>
       <div>...</div>
    </body>
    </html>
JS中的

代码

var 
     url = $('head').find('#idscript').attr('src'),
     host = url.replace(/(\/\/.*?\/).*/g, '$1');

console.log(host);

4 个答案:

答案 0 :(得分:1)

我有一个想法(基于jQuery的片段):

var yourScriptTag = $('head').find('script[src$="jquery-1.7.1.js"]').eq(0);
var theHostnameOfYourScript = $(yourScriptTag).attr('src').replace(/(http:\/\/.*?\/).*/g, '$1');

alert(theHostnameOfYourScript);

jsfiddle示例:http://alpha.jsfiddle.net/XsJn8/

如果您知道脚本的文件名(如果它始终相同且唯一),您可以使用此代码段获取主机名。

如果此路径是相对路径(并且不包含主机),则可以使用简单的location.hostname

获取主机名

答案 1 :(得分:0)

抱歉,不可能。下载脚本的内容,然后触发它。此时剧本“认为”他在你的网站上。

当然除非主机在脚本中被硬编码。

答案 2 :(得分:0)

在test.js中,您可以使用:

var url = document.URL;

然后解析网址结果。

你不能制作跨站点脚本,所以如果你需要更复杂的东西,你可以在php中编写你的javascript并致电:

<script type="text/javascript" src="http://hostTwo.com/script/test.php"></script>

但那并不标准。 无论如何,该解决方案在服务器上,具有设计的代理。

答案 3 :(得分:0)

这是不可能的,因为JavaScript代码是在客户端执行的。你可以以某种方式从你的URL中解析它,但我不认为这是非常有用和可能的。