Как я могу получить имя хоста или адрес моего скрипта .js из скрипта .js? - PullRequest
1 голос
/ 28 сентября 2011

У меня есть веб-сайт, который загружает один и тот же скрипт с любого количества разных серверов:

<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 ]

1 голос
/ 09 августа 2012

Я думаю, что приведенный ниже код может помочь:

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('/'));
}

Вам нужно заменить <<< - ### - >>> на имя вашего скрипта,и у вас будет путь, сохраненный в ThisScriptPath (не забудьте использовать последнюю косую черту)

Совет : используйте предупреждение, чтобы проверить результаты, прежде чем приступить к работе

0 голосов
/ 28 сентября 2011

Вы можете извлечь из window.location.host первую часть имени домена с помощью регулярного выражения.

Вы можете использовать это для извлечения первой части

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